• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Swift教程_swift常见问题(0001)_CoreData: warning: Unable to load class named 'x ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Swift教程_swift常见问题(0001)_CoreData: warning: Unable to load class named 'xxx' for entity 'xxx'

Swift教程_swift常见问题(0002)_完美处理SourceKitService Crashed异常,6.1.1大部分已经修复

Swift教程_swift常见问题(0003)_storyboard修改不生效

Swift教程_swift常见问题(0004)_swift代码不能自动提示和补全

Swift教程_swift常见问题(0005)_完美解决Cannot override 'dealloc'异常

Swift教程_swift常见问题(0006)_完美解决swift数组索引是变量时的内存溢出

Swift教程_swift常见问题(0007)_Can't find model for source store


问题描述:

相信搞过swift的coreData开发的都应该知道,直接通过xcdatamodeld配置文件,通过Editor->Create NSManagedObject SubClass自动创建实体类后,通过class func entityForName(entityName: String, inManagedObjectContext context: NSManagedObjectContext) -> NSEntityDescription?这个方法获取实体时会报一个异常,如下:

CoreData: warning: Unable to load class named 'xxx' for entity 'xxx'.  Class not found, using default NSManagedObject instead.

该异常是由于swift的注解机制引起的,首次运行只会对声明了@objc的类认为是实体类。


解决方案:

方案1.临时处理方法

在对应的实体类上声明@objc(TestEntity),代码如下:

@objc(TestEntity)
class TestEntity: NSManagedObject {


方案2.永久处理方法

每个实体类都做上面的处理有些繁琐,按照下面的方法修改coreData生成实体类的模版,这样自动生成时就会自动加上该句声明。具体如下:

首先,找到xcode的实体类生成模版NSManagedObject subclass.xctemplate,具体路径<Xcode应用路径>/Contents/Developer/Library/Xcode/Templates/File Templates/Core Data/NSManagedObject subclass.xctemplate,如图:


然后,将该文件夹连同以下文件复制到~/Library/Developer/Xcode/Templates***意要自己创建Templates文件夹),如图:


最后,修改这个文件夹下的___FILEBASENAME___.swift文件,自动生成时就会根据这个模版进行生成了。

代码如下:

import Foundation
import CoreData

@objc(___FILEBASENAMEASIDENTIFIER___)//和类名一致即可,将会按照类型添加括号中内容
class ___FILEBASENAMEASIDENTIFIER___: ___COREDATAMANAGEDOBJECTSUPERCLASS___ {

___COREDATAPROPERTYIMPLEMENTATIONS___
}


点击进入ooppookid的博客


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
OC和Swift混合开发需要做的准备发布时间:2022-07-14
下一篇:
使用curl操作openstack swift发布时间:2022-07-14
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap