我认为将包含信息的基本数据对象定义为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")
}
}
最佳答案
CKRecord是CloudKit方法将返回的东西。不能解析为您的testCKRecordClass(容易)。因此,您只能将其用于创建CKRecord并将其写入CloudKit。
recordType只能由CKRecord的构造函数启动。如果调用super.init(recordType),也许可以正常工作
看来您只想要一种尽可能简单地使用CloudKit的方法。如果是这样,那么我也建议您也看看https://github.com/evermeer/EVCloudKitDao。这是一个CloudKit便利程序库,它将使用反射在CKRecord之间进行解析。