我正在创建一个简单的应用程序,并实现userInformation部分。用户可以编辑他的信息,但是如果用户没有输入任何信息,我会遇到麻烦,当我尝试从未定义的列中检索数据时,它会崩溃。
这是我检索用户数据的代码。现在我可以检查一个特定的值,但是,我发现了一个错误' undefined'之一。
var query = PFQuery(className: "Note")
query.getObjectInBackgroundWithId("kg8KhAWCms", block: {
(obj, error)in
if let obj = obj! as? PFObject {
let nickname = (obj.objectForKey("text")) as! String
if (nickname != nil) {
///// I have a error message that binary operator'!=' cannot be applied to operands of type 'String' and 'NiLiteralConvertible'
self.nickNameLabel.text = nickname
}else{
self.nickNameLabel.text = "you don't have a nick name"
}
} else {
print(error)
}
})
什么是NiLiteralConvertible' ? 而且我也试过这个,
var query = PFQuery(className: "Note")
query.getObjectInBackgroundWithId("kg8KhAWCms", block: {
(obj, error)in
if let obj = obj! as? PFObject {
let nickname = (obj.objectForKey("text")) as! String
if !(nickname.isEmpty) {
self.nickNameLabel.text = nickname
}else{
self.nickNameLabel.text = "you don't have a nick name"
}
} else {
print(error)
}
})
所以我问我如何处理崩溃前检索未定义的值? (请为我写完整的代码)
///喜欢这个
if (undefined in parse == somekindOfType) {
print("yes")
}
答案 0 :(得分:1)
您无法使用nickname != nil
,因为您已经说过不能 nil
let nickname = (obj.objectForKey("text")) as! String
。
as! String
打开obj.objectForKey("text")
并且不能nil
,否则您将收到错误。
我建议使用以下内容:
if let nickname = obj.objectForKey("text") as? String {
self.nickNameLabel.text = nickname
}
else{
self.nickNameLabel.text = "you don't have a nick name"
}
或许这对阅读有用:Swift Literal Convertibles