我想知道您是否可以帮助我了解如何将此代码“listen
”改为simperium
。使用NSFetchedResultsController
时,一切都会自动发生,但我如何处理以下代码?试图阅读该文件,但对我来说并不是很清楚。
NSError *error;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
fetchRequest.entity = [NSEntityDescription entityForName:kPersonEntity inManagedObjectContext:self.managedObjectContext];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"title == queen"];
NSArray *array = [[self.managedObjectContext executeFetchRequest:fetchRequest error:&error] filteredArrayUsingPredicate:predicate];
if(array.count > 0) {
_queen = (Person *)[array objectAtIndex:0];
}
谢谢!
答案 0 :(得分:1)
您可以收听NSManagedObjectContextDidSaveNotification
通知并采取相应措施。一旦Simperium处理并保存任何更改,您将收到NSManagedObjectContextDidSaveNotification
通知。听听它:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(contextSaved:) name:NSManagedObjectContextDidSaveNotification object:ctx];
然后,在您的contextSaved:
方法中,过滤掉您关心的对象
- (void)contextSaved:(NSNotification *)n
{
NSDictionary *userInfo = [n userInfo];
NSSet *objects = <see NSManagedObjectContext Change Notification User Info Keys>
<filter/process objects>
}
另外,不要忘记removeObserver
:
[[NSNotificationCenter defaultCenter] removeObserver:self];
答案 1 :(得分:0)
您最好的选择是查看SPBucketDelegate.h
。您可以在delegate
上设置SPBucket
,并直接从Simperium接收各种通知。
这种方法是首选,因为它可以确保您无法对Simperium在幕后执行的数据管理产生负面影响。