几个月后我回到我原来的旧XCode项目,现在我有很多错误,我之前没有,我假设与更新的语法有关。
为什么我会看到:
没有更多上下文的表达类型不明确
这个块
120
我尝试@IBAction func submitUrl(sender: UIButton) {
var app = UIApplication.sharedApplication().delegate as! AppDelegate
//Error occurs in below declaration of studentDict
var studentDict = ["latitude": self.latitude, "longitude": self.longitude, "firstName": app.firstName, "lastName": app.lastName, "mediaURL": urlField.text]
var studentInfo = StudentInformation(data: studentDict as! [String : AnyObject])
ParseClient.sharedInstance().postStudent(studentInfo, mapString: self.mapString){(success,data) in
if(success){
self.dismissViewControllerAnimated(true, completion: nil)
}
else{
Shared.showError(self,errorString: data["ErrorString"] as! String)
}
}
}
和studentDict:NSArray
,因为我认为它无法正确解释studentDict:Dictionary
中的内容,但这没有用。究竟是什么错误告诉我,我失踪了?
答案 0 :(得分:2)
您初始化的一个或多个值可能是可选的,因此可以为零。这就是您收到此错误的原因
var studentDict:[String:AnyObject?] = ["latitude": self.latitude, "longitude": self.longitude, "firstName": app.firstName, "lastName": app.lastName, "mediaURL": urlField.text]
答案 1 :(得分:1)
如果有人仍然面临这样的问题:
快速的黄金法则 - 你必须清楚你的类型 对象强>
声明将Array作为参数的方法(而不指定数组中的对象类型即[String]
或[MyModelObject]
或[SKProduct]
)和想在定义中使用参数,你有两个选择:
在尝试使用/访问对象时指定对象的类型。以下为例:
for object in objects as! [SKProduct] {
self.productsToPurchase.addObject(object)
}
此处,objects
是一个定义如下的数组:var objects:NSArray?
或修改方法的定义并指定对象的类型。以下为例:
func getMeProducts(products: [SKProduct]) {
NSLog("Okay! Ready for purchase")
}
在后一种情况下,编译器不允许您发送通用Array对象。通用我指的是你没有指定数组所持有的对象的类型。
我希望这是有道理的。如果没有,再次阅读黄金法则:)