解析服务器// findObjectsInBackgroundWithBlock //数组

时间:2016-08-20 08:41:30

标签: swift parse-platform swift2 parse-server pfquery

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函数findObjectsInBackgroundWithBlockArray存在问题。完成我的函数后会给我一个包含初始值的数组。在函数内部,我可以看到添加到数组中的值。

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
    }
}

有什么想法吗? +对不起这个初学者的问题。

1 个答案:

答案 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)
    }
}