我有一个带谓词的fetchedResultsController,其中"isOpen == YES"
在调用closeCurrentClockSet时,我将该属性设置为NO.因此,它应该不再出现在我的tableView上.
出于某种原因,这种情况并没有发生.
有人可以帮我解决这个问题吗?
-(void)closeCurrentClockSet
{
NSPredicate * predicate = [NSPredicate predicateWithFormat:@"isOpen == YES"];
NSArray *fetchedObjects =
[self fetchRequestForEntity:@"ClockSet"
withPredicate:predicate
inManagedObjectContext:[myAppDelegate managedObjectContext]];
ClockSet *currentClockSet = (ClockSet *)fetchedObjects.lastObject;
[currentClockSet setIsOpen:[NSNumber numberWithBool:NO]];
}
Run Code Online (Sandbox Code Playgroud)
-
通过调用自定义fetchRequestForEntity:withPredicate:inManagedObjectContext方法,我有更多方法,使用完全相同的方法.
在这些方法中,更改属性时,tableView会正确更新!但是这一个上面(closeCurrentClockSet),没有!我无法弄清楚为什么.
-
我对fetchedResultsController的实现来自Apple的文档.
另外,另一个细节.如果我将我的应用程序发送到后台.关闭它并重新打开,tableView显示更新应该!
我尽力在stackOverflow上关注之前的问题.没运气.我也NSLogged这个骨头.正确获取对象.这是正确的.isOpen属性正在更新为NO.但由于某种原因,我的fetchedResultsController不更新tableView.
我确实尝试过几个"锤子"解决方案,比如reloadData和调用performFetch.但那没用.或者使用它们会有意义......
编辑:抓住它,DID工作,在我的resultsController上的performFetch之后调用reloadData imediatly但是使用reloadData正在敲定一个解决方案.此外,它还会取消所有动画.我希望我的控制器自动更新我的tableView.
有人可以帮我解决这个问题吗?
任何帮助是极大的赞赏!
谢谢,
努诺
编辑:
完整的实施.
fetchedResultsController非常标准和简单.其他一切都来自Apple的文档
- (NSFetchedResultsController *)fetchedResultsController
{
if (_fetchedResultsController) {
return _fetchedResultsController;
} …Run Code Online (Sandbox Code Playgroud) objective-c nsfetchedresultscontroller nsmanagedobject nsmanagedobjectcontext ios