加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ios – 非零整数值的核心数据EXC_BAD_ACCESS

发布时间:2020-12-14 17:42:24 所属栏目:百科 来源:网络整理
导读:我有两个具有int64_t属性的核心数据模型.当我尝试为整数字段分配非零值时,其中一个工作正常而另一个抛出EXC_BAD_ACCESS.我已经阅读了重新创建NSManagedObject子类的答案,但我没有成功.破碎的类看起来像这样: @interface NoteObject : NSManagedObject@prope
我有两个具有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

违规行在此块中:

_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).

它对我有用.希望对你有效.

阿里

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读