1

我不知道这是怎么回事,但我有一个相当复杂的 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]

它没有显示我刚刚设置为已租用的对象:(如果我再次过滤“可用”,它确实会显示出来,但是我在该对象中获得的状态是它租用的结果,所以它基本上搜索旧数据。

当我保存核心数据时:

[[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];
4

1 回答 1

1

Probanly Magical Record 使用核心数据的获取请求进行获取。此请求始终传递到商店。因此,它仅在其已保存状态下查找已保存的数据。

使用 Core Data 的 fetch 请求,您可以通过将 includePendingChanges 设置为 YES 来更改此行为。我认为 Magical Record 支持类似的功能。

于 2013-07-10T20:10:14.170 回答