试图设置核心数据关系导致崩溃
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.list
和 task
都是有效对象。还要检查它们是否具有相同的context
属性。
【参考方案1】:
我遇到了同样的问题,我在 .xcdatamodeld 文件中修复了它。我不小心选择了关系的有序排列复选框,而没有重新生成 NSManagedObject 类。取消选中此框并重新构建为我解决了这个问题。如果仍然有问题,请尝试重新生成 NSManagedObject 类。
【讨论】:
以上是关于试图设置核心数据关系导致崩溃的主要内容,如果未能解决你的问题,请参考以下文章