ObjectMapper(序列化)通过协议&扩展

时间:2015-09-18 19:27:49

标签: ios swift serialization protocols

我正在构建一个从服务器提供用户数据的库,但我不想定义具体的类,因为我希望最终用户能够指定他们想要的任何父类(例如:{{ 1}})。我还想通过ObjectMapper库提供映射功能。

我目前的想法是编写一个名为NSManagedObject的协议,该协议声明了所有变量和父协议,并在协议上使用扩展来添加映射和网络功能。

这是我的第一次尝试:

User

这个问题是我不能从静态上下文中调用protocol GenericUser: Mappable { var name: String { get set } var email: String { get set } } extension GenericUser { mutating func dynamicMapping(map: Map) { name <- map["name"] email <- map["email"] } } class AppSpecificUser: NSManagedObject, GenericUser { @NSManaged var name: String @NSManaged var email: String @NSManaged var uid: String required convenience init?(_ map: Map) { self.init() } func mapping(map: Map) { dynamicMapping(map) uid <- map["generic_bag"]["uid"] } } 函数(self是不可变的)。但是,如果我未将mutating函数指定为dynamicMapping(),则无法操纵名称和电子邮件属性。

有办法做到这一点吗?

0 个答案:

没有答案