我正在使用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 ?? ""
请注意?
with的使用as?
-这种方式,如果值不是字符串,它将优雅地失败(实际上,as
从Swift 1.2开始,您将被迫使用这种方式)。
您可能需要摆弄parens来修正as
vs的优先级,??
具体取决于您所运行的Swift版本。
PS,如果您正在运行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
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句