我不知道这是怎么回事,但我有一个相当复杂的NSPredicate:
NSString rentalStatus = @"Available";
[NSPredicate predicateWithFormat:@"(status != nil) AND (status == %@)", rentalStatus]
然后我搜索:
rentals = [RegisterSaleRental findAllSortedBy:@"rental_due_date" ascending:NO withPredicate:predicate];
一切都很好,但是如果我快速将状态从“可用”设置为“已租用”,则对象在屏幕上显示为“已租用”(因此状态已设置)但是当我尝试过滤“已租用”时:
NSString rentalStatus = @"Rented";
[NSPredicate predicateWithFormat:@"(status != nil) AND (status == %@)", rentalStatus]
它没有显示我刚刚设置为Rented的对象:(如果我再次筛选可用它确实显示,但我在结果中得到的状态我得到了它,所以它基本上搜索旧数据。
当我用以下内容保存核心数据时
[[NSManagedObjectContext defaultContext] saveToPersistentStoreAndWait];
确实如此,并且完美无缺。 我的问题是,在改变状态或其他任何事情之前,我是否必须每次都保存?我找不到任何需要它的地方。谢谢!
更新(核心数据设置代码)
// Configure MagicalRecord to use RestKit's Core Data stack
[NSPersistentStoreCoordinator MR_setDefaultStoreCoordinator:managedObjectStore.persistentStoreCoordinator];
[NSManagedObjectContext MR_setRootSavingContext:managedObjectStore.persistentStoreManagedObjectContext];
[NSManagedObjectContext MR_setDefaultContext:managedObjectStore.mainQueueManagedObjectContext];
答案 0 :(得分:1)
Probanly Magical Record使用Core数据的获取请求进行获取。这个请求总是归结到商店。因此,它只能以保存的状态查找已保存的数据。
使用Core Data的获取请求,您可以通过将includePendingChanges设置为YES来更改此行为。我认为Magical Record支持类似的功能。