Ios 在UITableViewCell touch上更新核心数据对象

Ios 在UITableViewCell touch上更新核心数据对象,ios,objective-c,core-data,uitableview,Ios,Objective C,Core Data,Uitableview,我有一个简单的todo应用程序,用户可以通过触摸单元格来选中/取消选中任务。但我不知道如何更新核心数据,将completed的布尔值设置为yes 这是我的密码: // //PakkelisteViewController.m //萨默莱尔 // //由罗尼·安德烈·本迪克森于2014年5月8日创作。 //版权所有(c)2014 Arbeidernes Ungdomsfylking。版权所有。 // 更改: tappedItem.completed = !tappedItem.completed;

我有一个简单的todo应用程序,用户可以通过触摸单元格来选中/取消选中任务。但我不知道如何更新核心数据,将completed的布尔值设置为yes

这是我的密码:

// //PakkelisteViewController.m //萨默莱尔 // //由罗尼·安德烈·本迪克森于2014年5月8日创作。 //版权所有(c)2014 Arbeidernes Ungdomsfylking。版权所有。 //

更改:

tappedItem.completed = !tappedItem.completed;
致:

这是在
NSNumber
实例中对bool值进行的最小代码解包和重新打包

另外,在
if
语句中,不要检查BOOL值
==1,因为这不一定是真的。只要说:

if ([tappedItem.completed]) { ...

您正在使用的复选框图像的名称似乎也有输入错误。

如果在
tableView:tableView didSelectRowAtIndexPath:
中移动代码以更新单元格的状态,该怎么办?此外,您能否解释一下您的意思,但我不确定如何将核心数据的布尔值设置为“是”来更新核心数据

更新托管对象的状态后,保存正在使用的上下文,然后可以对整个表或特定索引路径执行重新加载

BOOL hasTap = ![tappedItem.completed boolValue];
tappedItem.completed = @(hasTap); // or [NSNumber numberWithBool:hasTap];

// save

// reload
我真的同意乔纳森的意见。使用
UITableView
s(或
UICollectionView
s)向wotk创建
NSFetchedResultsController
。您可以将其委托设置为NSFetchedResultsControllerDelegate,以侦听和处理插入、删除、移动行(和节)的操作


教程应该是。

也许可以告诉我们您到目前为止尝试了什么,因为在核心数据文档中很容易找到。代码的基本逻辑如下:处理单元格选择、获取要更新的对象、更新相关属性、保存上下文。NSFetchedResultsController的实现是一个不错的选择,可以处理插入、更新、,以及删除节和行。@Jonathan我发现Apple文档有点混乱。你知道有什么好的教程或视频可以教我这个吗?
if ([tappedItem.completed]) { ...
BOOL hasTap = ![tappedItem.completed boolValue];
tappedItem.completed = @(hasTap); // or [NSNumber numberWithBool:hasTap];

// save

// reload