当我调用DidSelectRowAtIndexPath时,我正在检查单元格是否已被检查,如果是,请检查Core Data中的密钥。 (此过程允许我将导航按钮从nil设置为Add,如果选中了一个项目)。我还想将所选项目放在一个数组(或集合)中,以便我可以在我的Add方法中调用它(以保存到Core Data)。我在头文件中声明了checkedArray,但它只将最后选择的单元格保存到数组中。这样做的正确方法是什么?
Athlete *checkedAthlete = (Athlete *)[self.fetchedResultsController objectAtIndexPath:indexPath];
[checkedAthlete setValue:[NSNumber numberWithBool:targetCustomCell.checked] forKey:@"athleteChecked"];
BOOL hasChecked = NO;
for (checkedAthlete in self.fetchedResultsController.fetchedObjects)
{
BOOL isChecked = [[checkedAthlete valueForKey:@"athleteChecked"] boolValue];
if (isChecked)
{
hasChecked = YES;
checkedArray = [[NSMutableArray alloc] initWithObjects:checkedAthlete,nil];
//NSLog(@"%@",checkedArray);
}
}
我还在标题中声明了NSMutableSet并尝试了:
[testSet = [NSMutableSet set] addObject:checkedAthlete];
答案 0 :(得分:0)
在这一行
checkedArray = [[NSMutableArray alloc] initWithObjects:checked athlete,nil];
您正在做的是创建一个新数组,其中包含一个项目并将其分配给checkedArray
。
您要做的是创建一个数组/集,然后向其添加对象。
- (void)viewDidLoad;
{
[super viewDidLoad];
self.checkedArray = [NSMutableArray array];
}
然后再做
[self.checkedArray addObject:checkedAthlete];
这是获取现有的可变数组/集并向其添加一个新对象,就像之前每次只使用一个项创建一个新的可变数组/集