1

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

我的具体问题:为什么行“self.recordType =”myRecordType”会产生错误“无法在self中分配给recordType”?这个CKRecord类中的每一个都是相同的类型,那么我该如何为其分配一个recordType ?

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

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")
        }
}
4

1 回答 1

1

CKRecord 将由 CloudKit 方法返回。这无法解析为您的 testCKRecordClass(很容易)。因此,您只能使用它来创建 CKRecord 以将其写入 CloudKit。

一个recordType只能由CKRecord的构造函数发起。如果你调用 super.init(recordType) 也许它可以工作

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

于 2015-01-26T07:30:01.483 回答