我认为将包含信息的基本数据对象定义为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")
}
}
答案 0 :(得分:1)
CKRecord是CloudKit方法返回的东西。无法解析为testCKRecordClass(easilly)。因此,您只能使用它来创建CKRecord以将其写入CloudKit。
recordType只能由CKRecord的构造函数启动。如果你调用super.init(recordType)
,也许它可以工作看起来您只想尽可能简单地使用CloudKit。如果是这样,那么我可以建议你看看https://github.com/evermeer/EVCloudKitDao它是一个CloudKit便利库,它将使用反射来解析CKRecord和CKRecord。