0 if-statement ios parse-platform swift
从IF子句中的parse执行查询并存储在StaffID中.我得到了我想要的东西.
但是在if/else子句之后,StaffID变量变为Nil
这是代码
func StaffIdQuery(DeviceToken: String) -> String
{
var StaffID = ""
let StaffIdQuery = PFQuery(className: "Staff")
StaffIdQuery.whereKey("StaffDeviceToken", equalTo: DeviceToken)
StaffIdQuery.getFirstObjectInBackgroundWithBlock {
(objects:PFObject?, error: NSError?) -> Void in
if error == nil && objects != nil {
StaffID = objects?.valueForKey("StaffID") as! String
print(StaffID) //This seems fine
}
else {
// Log details of the failure
print("Error: \(error!) \(error!.userInfo)")
}
}
print(StaffID) //this becomes nil
return StaffID
}
Run Code Online (Sandbox Code Playgroud)
我应该修复什么来获取查询数据?
它是零还是空字符串?我打赌这是后者.在Swift中,当你声明一个类似你的var时:
var StaffID = ""
Run Code Online (Sandbox Code Playgroud)
它假定类型,而String
不是String?
.这意味着它永远不会是零.
您在后台队列中异步设置StaffID的值,但是在后台队列获得更改以设置它之前打印它.如果你在块内(你已经这样做)打印它,你将获得正确的值.如果没有额外的同步逻辑,则不应该依赖于在不同线程/队列中设置的变量的值.
归档时间: |
|
查看次数: |
257 次 |
最近记录: |