[英]NSString? is not convertible to 'StringLiteralConvertible' & ?! in Swift
在AI类中,具有以下变量:
var collectionElement : PFObject?
然后,我需要调用一个用户使用的方法。 但是在我想检查它是否为零之前。 所以我做类似的事情:
if collectionElement != nil{
if let elementName = collectionElement["elementName"] as? NSString{
elementTitle.text = elementName as String
}
...
query.whereKey("fileCollectionElement", equalTo:collectionElement!)
}
在BI类中,如下分配值:
cell.collectionElement = collectionElements[indexPath.row]
其中collectionElements [indexPath.row]是PFObject。
这段代码给了我错误,并且玩弄了! 和?,我可以使应用程序运行,但会崩溃,特别是由于行coll ...!= nil
我真的很困惑吗? 和! 的东西。 什么时候使用正确的东西? 为什么有时我不能检查是否为零(在Objective-C中我可以一直做到)?
? 和! 对于变量: 当变量可以是对象或可以为nil时使用。 ! 当变量可能是一个对象或可以为nil时使用,但绝对不能为nil。 这样可以避免编码器每次都必须拆开包装。
? 和! 转换:“ x as?y”检查是否可以将“ x”转换为“ y”,如果可以,则将其转换为“ y”。 “ x as!y”强制将x强制转换为y
因此,在您的代码中应检查为? 字符串,因为您似乎以后无论如何都要尝试将其转换为字符串。 所以试试这个:
if collectionElement != nil{
if let elementName = collectionElement["elementName"] as? String{
elementTitle.text = elementName
}
...
query.whereKey("fileCollectionElement", equalTo:collectionElement!)
}
至于索引countElements时的错误,这可能会返回nil值,因此您应确保双方在使用它们的类型上达成共识。 如果countElements包含可选的(PFObject?),请确保cell.collection元素也是可选的(PFObject?)。
在Swift中,具有相同的确切类型至关重要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.