从Parse中获取子类化对象

时间:2015-04-10 00:29:16

标签: ios arrays swift casting

在我们的项目中,我们有一个名为Attendee的类,它继承自PFObject。我们运行一个PFQuery来获取PFObject列表,我们希望将它存储到全局Attendee数组中。下面是数组的代码和我们的查询:

var attendees: [Attendee] = []

query.findObjectsInBackgroundWithBlock { (objects: [AnyObject]?, error: NSError?) -> Void in
                if( error == nil ) {
                    attendees = objects as! [Attendee]
                } else {
                    println( error )
                }
            }

但是,当我在调试器中检查与会者数组的内容时,它总是为空。使用调试器,我检查了findObjectsInBackgroundWithBlock返回的对象数组,并且有正在获取的对象。

我还附上了下面的Attendee课程定义。

class Attendee: PFObject, PFSubclassing {
    override class func initialize() {
        var onceToken : dispatch_once_t = 0;
        dispatch_once(&onceToken) {
            self.registerSubclass()
        }
    }

    class func parseClassName() -> String {
        return "Attendee"
    }
}

为什么类型转换和副本无法正常运行?我们正在开发Swift 1.2和Xcode 6.3

1 个答案:

答案 0 :(得分:1)

您必须在AppDelegate中注册自定义对象:

Attendee.registerSubclass()

在解析初始化Parse.setApplicationId("xxx", clientKey: "XXX")

之前

如果你没有,你必须使用参加者的班级名称来启动PFQuery:

let query = PFQuery(className: Attendee.parseClassName())
query.fromLocalDatastore() //if data is locally stored
query.findObjectsInBackgroundWithBlock { .. }

这些步骤对我有用。