不清楚“表达类型是不明确的,没有更多上下文”错误

时间:2015-10-15 20:39:38

标签: ios swift

几个月后我回到我原来的旧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中的内容,但这没有用。究竟是什么错误告诉我,我失踪了?

2 个答案:

答案 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对象。通用我指的是你没有指定数组所持有的对象的类型。

我希望这是有道理的。如果没有,再次阅读黄金法则:)