NSManagedObject类中fetchRequest函数的作用是什么,是否为必需项?
Core Data 自动生成 fetchRequest() 方法说明
方法具体作用
- 这是Xcode为手动代码生成的Core Data实体提供的类型安全快捷构造工具,核心作用是省去手写样板代码:你不需要每次获取Sensor实体时都手动写
NSFetchRequest<Sensor>(entityName: "Sensor"),直接调用Sensor.fetchRequest()就能得到泛型绑定正确的获取请求实例,还能避免实体名拼写错误、类型转换失误的问题。 - 前缀
@nonobjc是为了避免和NSManagedObject父类中暴露给Objective-C运行时的同名方法冲突,该Swift专属方法不会参与OC runtime的方法调度。
是否为实体运行必需项
这个方法完全不是Core Data运行的必需项,你删除后程序正常运行是符合预期的:
- Core Data底层的运行逻辑只依赖
.xcdatamodeld里的实体定义,和这个上层的Swift语法糖方法没有任何关联。 - 只要你项目中没有用到
Sensor.fetchRequest()的写法来构造获取请求,所有的NSFetchRequest都是你手动构造的,就不会触发对这个方法的依赖,自然不会报错。 - 只有当你用到这个快捷构造方法时,缺少它才会触发编译错误,不会产生运行时问题。
网传Core Data必须依赖该方法的说法存在偏差,误把开发层面的便捷工具当成了底层必需依赖。
内容的提问来源于stack exchange,提问作者Joe Scotto
相关产品推荐
相关产品推荐

