解析服务器 // findObjectsInBackgroundWithBlock // 数组
Parse Server // findObjectsInBackgroundWithBlock // Array
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 周)的新手,我正在构建一个应用程序以娱乐和学习。
我的解析函数 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
}
}
有什么想法吗? + 抱歉这个初学者问题。
您需要将 closures
与您的函数一起使用,因为您要使 block
和 block
将以 async
方式工作,因此您需要声明您的函数使用 closure
然后 return 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)
}
}
现在像这样调用这个函数
self.userKcal { (strings) -> () in
print(strings)
}
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 周)的新手,我正在构建一个应用程序以娱乐和学习。
我的解析函数 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
}
}
有什么想法吗? + 抱歉这个初学者问题。
您需要将 closures
与您的函数一起使用,因为您要使 block
和 block
将以 async
方式工作,因此您需要声明您的函数使用 closure
然后 return 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)
}
}
现在像这样调用这个函数
self.userKcal { (strings) -> () in
print(strings)
}