如何选择一个 TableViewCell 并将所有其他单元格设置为 CoreData 中的布尔值 NO?
Posted
技术标签:
【中文标题】如何选择一个 TableViewCell 并将所有其他单元格设置为 CoreData 中的布尔值 NO?【英文标题】:how to select one TableViewCell and set all the other Cells to the Bool Value NO in CoreData? 【发布时间】:2012-04-20 06:41:51 【问题描述】:我有一个表格列表,用布尔值保存在核心数据中,当我选择一个单元格时,布尔值在核心数据中保存为“是”。但是当我选择一个多于一个单元格时,有 2 个单元格为“是”。我只想将 1 个单元格设置为是。我怎样才能做到这一点。 这是我的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
BestuhlungCell *cell =(BestuhlungCell *)[tableView dequeueReusableCellWithIdentifier:@"Cell"];
NSManagedObject *managedObject = [self.fetchedResultsController objectAtIndexPath:indexPath];
cell.bestuhlungLabel.text = [managedObject valueForKey:@"bestuhlungstitel"];
NSData *data = [[NSData alloc] initWithData:[managedObject valueForKey:@"bestuhlungsfoto"]];
UIImage *image = [UIImage imageWithData:data];
cell.bestuhlungFoto.image = image;
cell.checkButton.hidden=YES;
return cell;
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
NSManagedObjectContext *context = [app managedObjectContext];
// BestuhlungCell *cell = (BestuhlungCell *)[tableView cellForRowAtIndexPath:indexPath];
Bestuhlung *bestuhlung=[self.fetchedResultsController objectAtIndexPath:indexPath];
if ([[bestuhlung valueForKey:@"check"] boolValue])
[bestuhlung setValue:[NSNumber numberWithBool:NO] forKey:@"check"];
else
[bestuhlung setValue:[NSNumber numberWithBool:YES] forKey:@"check"];
NSError *error = nil;
if (![context save:&error])
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
[self.navigationController popViewControllerAnimated:YES];
【问题讨论】:
【参考方案1】:你可以这样做:
NSArray *sections = self.fetchedResultsController.sections;
for(NSFetchedResultsSectionInfo *sectionInfo in sections)
for(Bestuhlung *currentBestuhlung in sectionInfo.objects
if(currentBestuhlung == bestuhlung)
// the selected bestuhlung
if ([[bestuhlung valueForKey:@"check"] boolValue])
[bestuhlung setValue:[NSNumber numberWithBool:NO] forKey:@"check"];
else
[bestuhlung setValue:[NSNumber numberWithBool:YES] forKey:@"check"];
else
// those are the other ones you want to uncheck
[currentBestuhlung setValue:[NSNumber numberWithBool:NO] forKey:@"check"];
【讨论】:
它有效,我只需将您的第二行更正为:for(id从您的 sn-p 中可以清楚地看出,您只是在修改选定单元格的值,而不是其他表值。
为了实现这一点,您已将表中每一行的 BOOL 值设置为 NO,然后您可以继续使用同一行代码。
【讨论】:
以上是关于如何选择一个 TableViewCell 并将所有其他单元格设置为 CoreData 中的布尔值 NO?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 tableviewcell 中显示选定的日期(在日历中)
如何在swift3中将每个tableViewcell数据发送到collectionview
选择 tableviewcell 时如何运行函数(例如,按下单元格时更新 UIImageView)