如何定义CKRecord类

时间:2015-01-25 23:17:18

标签: ios swift initialization cloudkit ckrecord

我认为将包含信息的基本数据对象定义为CKRecord可能是个好主意,因为我显然会使用CloudKit。但是,我不知道如何制作一类CKRecord。特别是,我不知道如何定义它的" recordType"。

我的具体问题:为什么行" self.recordType =" myRecordType"引起错误"无法分配给自己的记录类型"?每个CKRecord类都是相同的类型,那么如何为它分配recordType?

我的第二个问题,如果你有观察结果:你是否看到在查询中直接在CloudKit(读写)中使用此类对象的任何其他问题?如果您在某处看到类似的示例代码,请告诉我。 THX

class testCKRecordClass: CKRecord {

    override init!(recordType: String!) {
        self.recordType = "myRecordType"
    }

    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    var title: NSString {
        get {
            return self.objectForKey("title") as NSString
        }
        set {
            self.setObject(newValue, forKey: "title")
        }
    }

    var location: CLLocation? {
        get {
            return self.objectForKey("location") as? CLLocation
        }
        set {
            self.setObject(newValue, forKey: "location")
        }
}

1 个答案:

答案 0 :(得分:1)

CKRecord是CloudKit方法返回的东西。无法解析为testCKRecordClass(easilly)。因此,您只能使用它来创建CKRecord以将其写入CloudKit。

recordType只能由CKRecord的构造函数启动。如果你调用super.init(recordType)

,也许它可以工作

看起来您只想尽可能简单地使用CloudKit。如果是这样,那么我可以建议你看看https://github.com/evermeer/EVCloudKitDao它是一个CloudKit便利库,它将使用反射来解析CKRecord和CKRecord。