[Core Data]Xcode 8+ 新建NSManageObject subclass方法

在新版的Xcode中, 转换Core Data实体(Entity)为对象模型时, 无法直接新建** NSManageObject subclass ** 了, 即: File-> New -> File... 中Core Data 栏没有了 NSManageObject subclass 选项 :


Core Data下没有NSManageObject subclass选项
新的方法

选中xxx.xcdatamodeld文件后, 选中导航栏: Editor -> Create NSManagedObject Subclass...


新的方法

之后, 就和之前的步骤一样了, 选择需要转换为模型的实体(Entity)即可!

选择实体

这时, 新建的文件是这样的:


是不是和之前的不太一样, 这里需要我们手动将People+CoreDataClass.h与People+CoreDataClass.m修改为:
People.h和People.m:

但是, 这样会报错:

Swift项目中会报如下错误错:

'PeopleEntity' is ambiguous for type lookup in this context
'PeopleEntity' is ambiguous for type lookup in this context

Objective-C 项目中会报如下错误:

只有这个错误, 没有详细信息;

解决方法

以上错误的解决方法是一样的, 如下:
在创建 ** NSManageObject subclass **之前, 修改一下实体(Entity)对象的属性:

将上图中 4 这里修改为Manual/None 即可:

即:

然后再去创建NSManageObject subclass就OK了;
这时新建的文件为:

g

如果看着不舒服, 可以将ManEntity+CoreDataClass.swift/PeopleEntity+CoreDataClass.swift改为ManEntity.swift/PeopleEntity.swift, 其实不改也不会报错, 也不会影响使用.

然后就可以使用了:

let delegate = UIApplication.shared.delegate as! AppDelegate
        let context = delegate.persistentContainer.viewContext
        
        let man: ManEntity = NSEntityDescription.insertNewObject(forEntityName: "Man", into: context) as! ManEntity
        
        man.name = "zhangsan"
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 15,512评论 4 61
  • 适读对象: 需要入门Core Data的朋友; 像我一样,尚未学过数据库相关课程,不太懂怎么写SQLite语句的朋...
    AntonyWong阅读 5,640评论 8 21
  • 已经参加过2次全程马拉松,但是并没有系统地进行过训练,平时只是每周5次左右10公里以内的匀速跑。为了能在我的家乡太...
    晓雪Eileen阅读 1,125评论 0 0
  • 你好呀,小女孩,今天是2017年4月1号,距我上一次给你写随笔已隔10天了啦。今天对我来说是一个特殊的日子——不是...
    知识海洋里的浅水鱼阅读 283评论 0 2
  • 面试是每个人进入一家公司的必经阶段。这个阶段是候选人和企业相互选择的过程。在面试前,我们有必要首先了解下整个面试的...
    刘仕祥阅读 3,991评论 19 192

友情链接更多精彩内容