在Swift中将PFObject(Parse)转换为JSON?

时间:2015-07-08 19:48:18

标签: ios swift parse-platform

有没有办法将PFObject从Parse转换为JSON?我保存为JSON,但是当我尝试加载时,我正在恢复[AnyObject]。投射到JSON不会起作用:

class func loadPeople() -> [String : Person] {

        var peopleDictionary: [String : Person] = [:]

        let query = PFQuery(className: "userPeeps")

        query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in
        if error == nil {


            //this only returns the first entry, how do I get them all?

            if let peopleFromParse = objects?.first?.objectForKey("userPeeps") as? JSON {
                for name in peopleFromParse.keys {
                    if let personJSON = peopleFromParse[name] as? JSON,

                        let person = Person(json: personJSON) {
                            peopleDictionary[name] = person
                    }
                }
            }

下面是我的保存功能,它可以像我想要的那样将JSON保存到Parse:

class DataManager {

    typealias JSON = [String: AnyObject]

    class func savePeople(people: [String : Person]) {

        var peopleDictionary = people

        var peopleJSON: JSON = [:]

        for name in peopleDictionary.keys {
            peopleJSON[name] = peopleDictionary[name]!.toJSON()
        }

        let userPeeps = PFObject(className: "userPeeps")

          userPeeps.setObject(peopleJSON, forKey: "userPeeps")

        userPeeps.saveInBackgroundWithBlock { (succeeded, error) -> Void in
                        if succeeded {
                            println("Object Uploaded")
                        } else {
                            println("Error: \(error) \(error!.userInfo!)")
                        }
                    }

    }

1 个答案:

答案 0 :(得分:0)

所以答案(正如Paulw11在上面指出的那样)是“对象”是真实数据的包装器,所以有必要遍历数组并将每个值存储为JSON:

var peopleDictionary: [String : Person] = [:]

        //1 load the dictionary of JSON for key people from Parse
        let query = PFQuery(className: "userPeeps")

        query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in
            if error == nil {

                if let unwrappedObjects = objects {

                    for object in unwrappedObjects {

                        if let peopleFromParse = object as? JSON {

                            for name in peopleFromParse.keys {
                                if let personJSON = peopleFromParse[name] as? JSON,

                                    let person = Person(json: personJSON) {
                                        peopleDictionary[name] = person
                                }
                            }
                        }
                    }
                }