NSManagedObject可自定义对象的可转换数组null /未填充

问题描述

我有一个像这样的核心数据模型:

User
- objectId
- access (transformable - array of "User_Access")

CustomObject
- objectId
- name
- etc

User_Access
- customObject

对象保存正确,可转换访问数组正确填充,但是在应用的第二次使用时,“访问”数组是未填充对象的数组:

"<User_Access: 0x6060001746e0> (entity: <null>; id: (null); data: <fault>)"

我正在使用这样的提取请求:

NSFetchRequest *fetch = [NSFetchRequest fetchRequestWithEntityName:@"User"];
[fetch setReturnsObjectsAsFaults:NO];
[fetch setIncludesSubentities:YES];
[fetch setIncludesSubentities:YES];
NSArray *test = [[SPModel objectContext] executeFetchRequest:fetch error:nil];
    
if (test.count == 0) {
    return nil;
}
    
User *user = (User *)test.firstObject;

获取请求完美地获取用户对象的属性,但是可转换的“访问”数组未填充。

解决方法

解决了!

与其使用可变形对象存储一组核心数据对象,不如使用一种关系并将目标设置为自定义对象类,并将类型从To One更改为To Many

这将要求您将头文件中的属性更改为NSSet,而不是NSArray