Parse Server: 2.2.17 (self hosted)
Parse-SDK-iOS-OSX: 1.14.2
ParseUI-iOS Version: 1.2.0
Xcode 7.3.1, Swift
我是iOS编程的新手(20周)并构建了一个有趣和学习的应用程序。
Parse函数findObjectsInBackgroundWithBlock
和Array
存在问题。完成我的函数后会给我一个包含初始值的数组。在函数内部,我可以看到添加到数组中的值。
class UserOverview {
var strings: [String] = ["1", "2", "3"]
init() {
userKcal()
}
func userKcal() -> [String] {
let query = PFQuery(className: "StringClassInParse")
query.whereKey("userPointer", equalTo: PFUser.currentUser()!)
query.findObjectsInBackgroundWithBlock { (objects, error) in
if let returnedObjects = objects {
for object in returnedObjects {
let kcal = object["kcal"] as? String
self.strings.append(kcal!)
}
}
print(self.strings) // output is ["1", "2", "3", "4", "5", "6"]
}
print(self.strings) // output is ["1", "2", "3"]
return strings
}
}
有什么想法吗? +对不起这个初学者的问题。
答案 0 :(得分:0)
您需要将closures
与您的功能一起使用,因为您正在使用block
并且block
将以async
方式工作,因此您需要使用{声明您的函数{1}}然后使用closure
返回String
数组。
closure
现在以这种方式调用此函数
func userKcal(completion: ([String]) -> ()) {
let query = PFQuery(className: "StringClassInParse")
query.whereKey("userPointer", equalTo: PFUser.currentUser()!)
query.findObjectsInBackgroundWithBlock { (objects, error) in
if let returnedObjects = objects {
for object in returnedObjects {
let kcal = object["kcal"] as? String
self.strings.append(kcal!)
}
}
completion(self.strings)
}
}