核心数据:更新阵列。

时间:2012-03-05 21:14:57

标签: iphone objective-c core-data

我有一个核心数据模型实体NoteObject,其transformable类型arrayOfTags。在NoteObject.h文件中,它是NSManagedObject的子类,arrayOfTags声明为:

NSMutableArray *arrayOfTags;
@property (nonatomic, retain) NSMutableArray *arrayOfTags;
//.m
@dynamic arrayOfTags;

问题是不会保存对此阵列所做的更改。 Someone suggested以下作为解决方案:

  

如果您使用的类的可变和不可变版本   表示属性 - 例如NSArray和NSMutableArray - 你应该   通常将get访问器的返回值声明为不可变的   即使内部模型使用可变对象,也是对象。

但是我不确定这意味着什么。我如何按照这些说明处理我的案件?

2 个答案:

答案 0 :(得分:1)

在此期间,即使您找到了解决方法,也请尝试以下方法:

[noteObject willChangeValueForKey:@"arrayOfTags"];

// make changes to noteObject.arrayOfTags

[noteObject didChangeValueForKey:@"arrayOfTags"];

答案 1 :(得分:1)

为核心数据实施访问者功能因您的关系模型而异。这个document应该可以帮助您入门。很可能你将使用这个设置为你的getter:

- (NSArray*)data
{
    [self willAccessValueForKey:@"data"];
    NSArray* array = [[NSArray alloc] initWithArray:arrayOfTags copyItems:YES];
    [self didAccessValueForKey:@"data"];
    return array;
}

请注意,上面的代码段只是一个示例,必须进行修改才能供您使用。

相关问题