나는 신속한 초보자이며 일할 대안을 얻으려고 서클을 돌고 있습니다. 제가 인터넷 검색을 많이 해봤 등 애플 문서를 읽을 수 있지만 나는 (간체) 내의 ViewController 니펫이와 사투를 벌인거야 :신속한 문제 (선택 사항)
는override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "segueToWebView") {
// check what we're passing around
print(sender!.urlString) // Optional("http://www.bbc.co.uk")
// do some url validation etc
var destUrl:String
if sender!.urlString == nil{
destUrl = "http://www.google.com"
} else {
destUrl = sender!.urlString // *** Error here ***
}
let targetWebViewController:GDWebViewController = segue.destinationViewController as! GDWebViewController
targetWebViewController.loadURLWithString(destUrl)
targetWebViewController.showsToolbar = true
targetWebViewController.title = sender!.busName // this works correctly too (so isn't that a String?)
}
}
오류는 위의 표시 줄에 Cannot assign value of type 'String?!' to type 'String'
입니다. 나는 그것을 다른 방법으로 풀지는 않았지만 그것을 이해할 수 없다.
더 코드
보낸 사람은 다음과 같은 구조의 정의있는 UIButton의 서브 클래스입니다 : 내가 알고하지 않는 옵션으로 변수를 설정 한
import UIKit
class TestButton: UIButton {
var urlString: String?
var busName: String?
}
버튼 여부/이러한 속성을 갖지 않습니다.
버튼을 탭 때 호출되는 방법은 이것이다 :
func tapTap(sender: TestButton) {
print(sender.busName, sender.urlString) // Optional("My Button") Optional("http://www.bbc.co.uk")
self.performSegueWithIdentifier("segueToWebView", sender: sender)
}
내가 스위프트 선택적 항목을 알고 나 같은 초보자를위한 공통의 걸림돌이며, 그들에 대한 문서가 많이있다하지만 난 알아낼 수 없습니다 도움이된다면 도움이 될 것입니다.
'print (sender! .urlString)'코드의 세 번째 줄은'AnyObject'에'urlString' 멤버가 없으므로 컴파일해서는 안됩니다. –
'var destUrl : String'을'var destUrl : String? '으로 대체하고 –
을 시도해주세요. 감사합니다. - 이제 기차에 타고 있으므로 최대한 빨리 제안을 확인하고 다시 게시 할 것입니다. – James