我已经搜索过,仍然没有发现任何相当有效的东西。问题/答案太旧了,或者它根本不适合我。这是我第一次尝试“我自己的”应用程序。因为它似乎是通过的权利,我正在制作一个清单应用程序。下面是我在寻找:iOS核心数据 - 更新多个记录
我的数据存储库包含4个属性:name, category, isChecked, isActive
(更多必将随之而来,因为我扩大)
当我的视图控制器最初的负荷,NSFetchedResultsController
有NSPredicate
,仅检索记录其属性isActive
为YES(或[NSNumber numberWithBool:YES
)。然后它将这些记录显示给用户的适当单元格。当用户单击一个单元时,Data Store会相应地更新并更改isChecked
属性。一切都很好,至此。
我现在需要做的是能够从列表中删除项目(1或更多)。具体而言,我需要它将数据存储属性isChecked
和isActive
更新为NO,只有当它的当前isChecked
属性为YES时。 (我并不想从数据存储删除记录,因为它们将被用来建立,为用户未来使用的数据库。)
我用过,除其他事项外:
[[[self fetchedResultsController] fetchedObjects]
setValue:[NSNumber numberWithBool:NO]
forKey:@"isChecked"];
这确实有效,它会删除选中标记并相应地更新商店。问题是,我不仅向isActive
项目的数据存储库发出另一个请求,还会搜索已提取的整个“活动列表”,并将它们的每个isChecked
属性设置为“否”。这对于小列表来说可能不是太大,但是随着列表的扩展,这可能是一个问题。
另一个问题是,如果我添加:(以及同样的方法中的第二数据存储请求)
[[[self fetchedResultsController] fetchedObjects]
setValue:[NSNumber numberWithBool:NO]
forKey:@"isActive"];
它集我名单中所有项目没有
所以我问题是:如何才能通过列表,找到仅检查的项目并只更新那些记录(同时设置isChecked & & isActive attributes = NO),其isChecked
属性为YES,而不是遍历整个列表?我试过创建一个单独的fetchedResultsController专门为这个按钮操作,它确实工作(也就是说,它没有崩溃),但调试器弹出一个相当大的'严重的应用程序错误'。我不会发布错误消息,因为它很长,很可能与任何解决方案无关。
任何援助将不胜感激。预先感谢,请温柔: - ]。
编辑
我已经使用for
循环,for (NSString *item in fetchedResultsController)
尝试,但我得到的错误...may not respond to 'countByEnumeratingWithState:objects:count'
看来各种各样的循环是这里的所需要的,但同样,没有什么我能找到的有关或者已经过时了。再次感谢您的帮助。
编辑2
这里是原来的错误我,当我跑第二个单独的fetchRequestController此按钮/方法:
An exception was caught from the delegate of NSFetchedResultsController during a call to -controllerDidChangeContent:. Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (4) must be equal to the number of rows contained in that section before the update (4), plus or minus the number of rows inserted or deleted from that section (0 inserted, 3 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out). with userInfo (null)
我想这一点,使用'ActiveListData'这是我NSManaged子类的名称,但得到了错误'异常在核心数据更改处理期间被捕获。这通常是NSManagedObjectContextObjecsDidChangeNotification观察者中的一个错误。 userInfo(null)在索引0处的索引3处没有对象。查看我的编辑上面的原始错误,我为此创建了一个单独的“fetchRequestController”。 – 2013-02-15 09:19:30
是啊,我看着苹果开发文档和有信息的TON,但一大堆的理论都要经过找一个实际的例子(如果有曾经是一个例子)。至少在这里,我可以把我需要的东西放到一个环境中,并得到一个相对直接的答案。我读了开发文档尽我所能,但它并不总是最容易的地方的答案 – 2013-02-15 09:25:47
是什么fetchedObjects返回?它是一个NSArray? – ggfela 2013-02-15 09:44:19