我创建了一个NSArray,我已初始化它以包含核心数据实体的属性。当我稍后尝试通过数组设置这些属性时,我得到错误“!表达式不可分配”。如何通过NSArray引用它们来设置属性的值?以下是我的代码的相关部分:
headingArray = [[NSArray alloc] initWithObjects:
heading1,
heading2,
heading3, ...
heading1,heading2,...是核心数据实体的属性
for (int i=1; [note.headingCount intValue]-1; i++) {
[note.headingArray objectAtIndex:i] = selectedTemplateForNote.heading1;
}
[note.headingArray objectAtIndex:i]是标记错误的代码“!表达式不可分配”。
答案 0 :(得分:3)
NSArray
是不可变的。如果不构建新数组,则无法更改其内容。请尝试使用NSMutableArray
和- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;
。
根据新信息进行编辑:
您可能正在尝试执行以下操作:
NSManagedObject *entity = ...;
for (int i=1; [note.headingCount intValue]-1; i++) {
[entity setValue:selectedTemplateForNote.heading1 forKey:[note.headingArray objectAtIndex:i]];
}
答案 1 :(得分:1)
在Objective-C中,您无法分配这样的值。您需要执行以下操作:
NSMutableArray* tempArray = [NSMutableArray arrayWithArray:note.headingArray];
for (int i=1; [note.headingCount intValue]-1; i++) {
[tempArray replaceObjectAtIndex:i withObject:selectedTemplateForNote.heading1];
}
[note setHeadingArray:[NSArray arrayWithArray:tempArray]];
答案 2 :(得分:-1)
选择了什么类型的TemplateForNote.heading1?确保它是一个NSValue!