您当前的位置: 首页 > 

CoreData中Transformable类型浅谈

发布时间:2018-09-09 09:20:51 ,浏览量:0

在很久很久以前,CoreData对于用户自定义类型数据的保存比较棘手,主要有2种办法:

  • 使用NSData
  • 使用Transformable类型

对于后者还需要写一个转换包装类,操作繁琐,显得意义不大.

不过现在Transformable类型只需要你保存对象的类遵守NSCoding协议,就可大功告成.

不仅如此,之后与此对象相关的标准类型都可以运用自如,比如:

class MyClass:NSCoding{
} var coreDataValue:NSObject? //OK! var coreDataValueArray:NSObject? //OK Too! if let value = coreDataValue as? MyClass{ //do something... } if let values = coreDataValueArray as? [MyClass]{ //do what you want... }

如上所示,实际上在CoreData的Description中,coreDataValue和coreDataValueArray的类型都是Transformable!

是滴,并不需要再傻傻的将MyClass包装成NSData,然后自己打包再解包了;也不用写繁琐的Transformable转换类了.

但是有一点要注意,你无法让一个NSManagedObject对象遵守NSCoding协议.

NSCoding主要就是支持持久存储,因为NSManagedObject等于已经完成了一种形式的持久存储支持(保存在CoreData中),所以从道理上也没必要再支持另一种.

如果你要实现原来Transformable同等的类型,很简单,用关系:

@NSManaged public var objects: NSSet?
@NSManaged public var object: MyClass?

以上两个类型在CoreData的描述中实际是两个关系:一对一 和 一对多!

关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    107766博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.3484s