gpt4 book ai didi

ios - swift |将 nil 分配给字符串

转载 作者:可可西里 更新时间:2023-11-01 01:41:44 26 4
gpt4 key购买 nike

我正在使用 Parse.com 编写应用程序。

func getContactsWithComplition(closure:() -> ())
{
contactArray=[];
if (PFUser.currentUser() != nil)
{
var realtion: PFRelation=PFUser.currentUser()["contactsOfUser"] as PFRelation;
var query: PFQuery=realtion.query() as PFQuery;
query.findObjectsInBackgroundWithBlock({ (contactsArray:[AnyObject]! , error:NSError!) -> Void in
if(error == nil)
{

for aContact in contactsArray
{
var cont=contact(phone: aContact["phoneNumber"] as String, firstName: aContact["name"] as String, lastName: aContact["familyName"] as String, adress: aContact["adress"] as String, email: aContact["email"] as String, role: aContact["role"] as String, note: aContact["note"] as String)
contactArray.append(cont)

}
closure()

}
else
{
println(error);
}
})


}
else
{
println("suck")
}
}

当其中一个部分的值未定义时,它返回nil,这不能被引用为String
我该如何解决?

最佳答案

假设您所说的部分是指姓名、电话号码等。

如果你想在没有值的情况下替换默认值,你可以使用 nil-coalescing 运算符:

//  assuming empty string is a reasonable substitute
let number = aContact["phoneNumber"] as? String ?? ""

注意 ?as? 一起使用 - 这样,如果值不是字符串,它将优雅地失败(实际上,您将被迫从 Swift 1.2 开始以这种方式使用 as

您可能需要使用括号来确定 as?? 的优先级,具体取决于您运行的 Swift 版本。

附言如果你运行的是 Swift 1.2,你可能会在前面删除一些可选的检查:

if let user = PFUser.currentUser(),
relation = user["contactsOfUser"] as? PFRelation,
query = relation.query() as? PFQuery
{
query.findObjectsInBackgroundWithBlock { contactsArray, error in
if let err = error {
println(err)
}
else {
// etc
}
}
}

关于ios - swift |将 nil 分配给字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29169077/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com