1

我想知道您是否可以帮助我了解如何使此代码“ 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];
}

谢谢!

4

2 回答 2

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];
于 2013-05-14T23:26:33.630 回答
0

您最好的选择是查看SPBucketDelegate.h. 您可以设置delegate任何SPBucket选项并直接从 Simperium 接收各种通知。

这种方法是首选,因为它确保您不会对 Simperium 在幕后执行的数据管理产生不利影响。

于 2013-05-27T22:01:29.880 回答