试图设置核心数据关系导致崩溃

Posted

技术标签:

【中文标题】试图设置核心数据关系导致崩溃【英文标题】:Trying to set Core Data Relationships causing crash 【发布时间】:2013-09-30 00:20:38 【问题描述】:

我有几个实体,一个名为“List”,一个名为“Task”。两者都有多个属性,并且只有 1 个关系。 list 属性有一个名为 hasTasks 的一对多关系,其目的地是任务。

这是为我生成的 Task.h 文件。

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>

@class Task;

@interface List : NSManagedObject

@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSNumber * number;
@property (nonatomic, retain) NSNumber * tasks;
@property (nonatomic, retain) NSNumber * totalTime;
@property (nonatomic, retain) NSSet *hasTasks;
@end

@interface List (CoreDataGeneratedAccessors)

- (void)addHasTasksObject:(Task *)value;
- (void)removeHasTasksObject:(Task *)value;
- (void)addHasTasks:(NSSet *)values;
- (void)removeHasTasks:(NSSet *)values;

@end

每当我运行一行代码时,例如:

[self.list addHasTasksObject:task];

它使我的应用程序崩溃而没有任何错误消息。任何帮助,将不胜感激。

【问题讨论】:

Task 是否设置为与List 有关系?另外,如果你只是做task.list = list会发生什么? 是任务设置为与列表有关系,但尝试设置该关系也会导致应用程序崩溃。执行 task.list = list 将不起作用,因为 list 不是属性或关系的名称。 添加异常断点以了解异常信息 我做了,它只是告诉我断点在代码行 [self.list addHasTasksObject:task];并且控制台中没有打印出错误。 通过 NSLogging 确保 self.listtask 都是有效对象。还要检查它们是否具有相同的context 属性。 【参考方案1】:

我遇到了同样的问题,我在 .xcdatamodeld 文件中修复了它。我不小心选择了关系的有序排列复选框,而没有重新生成 NSManagedObject 类。取消选中此框并重新构建为我解决了这个问题。如果仍然有问题,请尝试重新生成 NSManagedObject 类。

【讨论】:

以上是关于试图设置核心数据关系导致崩溃的主要内容,如果未能解决你的问题,请参考以下文章

关系保存时核心数据崩溃

核心数据 VS 验证错误对象,导致崩溃

试图掌握核心数据中的关系

将输出映射到 Restkit 中的核心数据时崩溃

嵌套循环导致Excel崩溃

核心数据导致 iPhone 崩溃