ios - Xcode 8 如何在 Objective-C 中使用核心数据代码生成类?

标签 ios objective-c xcode core-data xcode8

我在看this tutorial在 Xcode 8 中使用 Core Data,视频使用的是 Swift。在视频中,他在 Core Data 模型中输入了一个名为 Task 的实体,然后在代码中他能够调用 Task,例如:

let task = Task(context: context)

我有一个名为 Tag 的实体。如何使用 Objective-C 在代码中访问 Tag? Codegen 设置在核心数据模型中,但我在我的项目中看不到任何其他文件。如果我尝试:

Tag test = [[Tag alloc] init];

我得到一个错误,提示 Tag 不存在。

最佳答案

如果 Codegen 设置为“类定义”,那么您只需导入实体的 NSManagedObject 子类头文件即可。

导入:

#import "Tag+CoreDataClass.h"

然后您的 Tag 对象的创建将被识别。

Tag *tag = [NSEntityDescription insertNewObjectForEntityForName:@"Tag" inManagedObjectContext:[self managedObjectContext];
tag.name = @"Tag Name";

注意:如果您想查看代表您生成的文件,您可以检查项目的 DerivedData 文件夹。您不应编辑这些文件或将它们导入到您的项目中。

类似于:

/Users/{用户名}/Library/Developer/Xcode/DerivedData/{你的项目名称}/Build/Intermediates/{你的项目名称}.build/Debug-iphonesimulator/{你的项目名称}.build/DerivedSources/CoreDataGenerated/{您的项目名称}/

还有其他 Codegen 选项可根据您的用例提供不同的选项:

  • 无/手动:允许您自己管理 NSManagedObject 子类。使用此选项,您将看到项目中的文件并可以修改它们。
  • 类别/扩展:允许您拥有不想让 Core Data 管理的自定义属性(特性)。

我在这里发布了关于 Codegen 选项的更详细的答案:https://stackoverflow.com/a/40647786/4748172

关于ios - Xcode 8 如何在 Objective-C 中使用核心数据代码生成类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41132790/

相关文章:

iphone - UIWebView 从不显示滚动条

ios - 日期计算过程中的奇怪错误

xcode 不支持运行 ios 12.1 的 iPhone 5s

iphone - 将对象设置为 nil 是否将其标记为垃圾回收

ios - 重建模型时 Xcode 提示将 swift 与 objective c 桥接

iphone - 当输入文本时,UITextView 在 UIScrollView 内部滚动父级

java - Swift iOS 不确定应用程序或远程服务器是否应该处理 amazon s3

ios - SKShapeNode 拖动不流畅

objective-c - 我无法打开邮件应用程序?

ios - 如何将所选 Collection View Cell 的图像推送到另一个 View Controller?