Я быстрый новичок и кружась по кругу, пытаясь получить возможность работать. Я сделал много Googling, читать Apple, Docs и т.д., но я борюсь с этим (упрощенно) фрагмент из моего 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)
}
Я знаю, что Swift УСТРОЙСТВА является общим камнем преткновения для новичков, как я и есть много документации о них, но я не могу понять так что любая помощь будет большой.
Третья строка в вашем коде 'print (sender! .urlString)' не должна компилироваться, так как 'AnyObject' не имеет члена' urlString'. –
замените 'var destUrl: String' на' var destUrl: String? 'И попробуйте –
Спасибо, ребята, я сейчас в поезде, поэтому проверю ваши предложения как можно скорее и отправьте их обратно. – James