我已经对此进行了广泛的研究。 前几天听到关于 Parse 的消息后,我一直在玩使用 Kinvey 作为我的 BaaS。 我正在尝试保存一个对象,但我收到与 KCSPersistable 相关的错误。
class Event : NSObject{
var entityId: String? //Kinvey entity _id
var name: String?
var date: NSDate?
var location: String?
var metadata: KCSMetadata? //Kinvey metadata, optional
}
func hostToKinveyPropertyMapping() -> [NSObject : AnyObject]! {
return [
"entityId" : KCSEntityKeyId, //the required _id field
"name" : "name",
"date" : "date",
"location" : "location",
"metadata" : KCSEntityKeyMetadata //optional _metadata field
]
}
由于超类,Swift 称其为 NSObject 冗余。 我删除了 KCSPersistable 声明,代码将成功构建,但现在我收到以下错误:
'Object "<KinveyPractive.Event: 0x7fed18d484c0>" of type "KinveyPractive.Event" does not implement 'hostToKinveyPropertyMapping', a required 'KCSPersistable' method for saving the object to the backend'
我遇到了一连串的问题。如果我删除KCSPersistable,Xcode会要求它。但是,如果我离开它,Xcode 将无法编译。
你看到的问题是因为 Kinvey 中的 NSObjects 隐式实现了 KCSPersistable。
我们已更正文档以反映这一点。请使用以下示例代替您的代码 -
class Event : NSObject {
var entityId: String? //Kinvey entity _id
var name: String?
var date: NSDate?
var location: String?
var metadata: KCSMetadata? //Kinvey metadata, optional
override func hostToKinveyPropertyMapping() -> [NSObject : AnyObject]! {
return [
"entityId" : KCSEntityKeyId, //the required _id field
"name" : "name",
"date" : "date",
"location" : "location",
"metadata" : KCSEntityKeyMetadata //optional _metadata field
]
}
}