gpt4 book ai didi

ios - 变量在 if-else 子句后变为 nil

转载 作者:行者123 更新时间:2023-11-28 09:34:25 25 4
gpt4 key购买 nike

在 IF 子句中解析执行查询并存储在 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
}

我应该如何修复才能获取查询数据?

最佳答案

它是 nil 还是空字符串?我敢打赌是后者。在 Swift 中,当您像这样声明一个 var 时:

var StaffID = ""

它假设类型是 String,而不是 String?。这意味着它永远不会为零。

您在后台队列中异步设置 StaffID 的值,但您在后台队列获得更改以设置它之前打印它。如果你在 block 内打印它(你已经这样做了),你会得到正确的值。如果没有额外的同步逻辑,您永远不应依赖在不同线程/队列中设置的变量值。

关于ios - 变量在 if-else 子句后变为 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35323828/

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