作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有两个具有 int64_t 属性的核心数据模型。其中一个工作正常,而另一个在我尝试为整数字段分配非零值时抛出 EXC_BAD_ACCESS。我已经阅读了说要重新创建 NSManagedObject 子类的答案,但我没有成功。损坏的类如下所示:
@interface NoteObject : NSManagedObject
@property (nonatomic) int64_t remoteID;
@property (nonatomic) int64_t remoteArticleID;
@property (strong, nonatomic) ArticleObject *article;
@property (strong, nonatomic) NSString *status;
@property (strong, nonatomic) NSString *token;
@property (strong, nonatomic) NSString *title;
@property (strong, nonatomic) NSString *noteContent;
@property (strong, nonatomic) NSDate *pubDate;
@property (strong, nonatomic) NSDate *modDate;
@end
@implementation NoteObject
@dynamic remoteID;
@dynamic remoteArticleID;
@dynamic article;
@dynamic status;
@dynamic token;
@dynamic title;
@dynamic noteContent;
@dynamic pubDate;
@dynamic modDate;
@end
违规行在此 block 中:
_noteObject = [NSEntityDescription insertNewObjectForEntityForName:@"Note" inManagedObjectContext:self.managedObjectContext];
_noteObject.remoteArticleID = 0; // this works
_noteObject.remoteArticleID = 1; // this crashes
真正让我难过的是,在另一个模型中,我有相同类型的相同字段,它们将毫无问题地接受非零值:
bookmarkObject = [NSEntityDescription insertNewObjectForEntityForName:@"Bookmark" inManagedObjectContext:self.managedObjectContext];
bookmarkObject.remoteArticleID = 0; // this works
bookmarkObject.remoteArticleID = 1; // this works, too
我的 .xcdatamodeld 文件中是否有任何可能导致此问题的内容?
编辑
我的数据模型如下所示:
最佳答案
我遇到了完全相同的问题。
当您手动编辑 NSManagedObject 中的属性时,xcode(或者可能是编译器,或者它们之间的两者)似乎有时会感到困惑 - 它最终将我们的整数视为指针并尝试直接访问内存 - 因此 EXC_BAD_ACCESS .
无论如何,正如这个问题所解释的那样:SO Question ,解决方案是删除你的旧类(显然复制出任何自定义代码,这样你可以稍后再粘贴回来)然后让 xcode 为你重新生成它(选择数据模型中的实体并选择“编辑器/创建 NSManagedObject 子类...”)。在出现的对话框中,确保勾选“对原始数据类型使用标量属性”。
您可能必须手动编辑生成的类以将一些非标量属性转回对象(我有一个日期对象,它转变成 NSDate 以外的东西 - 我忘记了具体是什么,但它接受了手动编辑回NSDate)。
它对我有用。希望它对你有用。
阿里
关于ios - 非零整数值的核心数据 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17352342/
我是一名优秀的程序员,十分优秀!