如何从fetchedResultsController到Plist的对象?

时间:2011-01-01 18:39:27

标签: cocoa nsdictionary nsfetchedresultscontroller

有人能帮助我吗?我有一个coredata应用程序但我需要将fetchedResultsController中的对象保存到NSDictionary中以用于发送UILocalNotifications。

我应该使用NSMutableSet,NSDictionary还是数组。我不习惯使用集合,我无法找到最好的方法。

请你告诉我如何做到这一点的线索?

谢谢,

麦克

1 个答案:

答案 0 :(得分:1)

如果我正确地阅读了您的问题,您就会问如何将对象打包到UILocalNotification的userInfo字典中。真的,它最适合你; userInfo词典由您创建,仅由您使用。

我不确定你为什么要使用NSFetchedResultsController - 该类用于有效地管理UI类(如UITableView)之间的托管对象的编组,而这里听起来你最好只得到一个NSArray您的managedObjectContext和相应的请求的结果,如下所示:

NSError *error = nil;
NSArray *fetchedObjects = [myManagedObjectContext executeFetchRequest: myRequest error: &error];
if (array == nil)
{
    // Deal with error...
}

您有预先存在的托管对象上下文和请求。您不需要在这里使用NSFetchedResultsController。

从那里,最简单的建议是建立你的userInfo字典,如下所示:

NSDictionary* myUserInfo = [NSDictionary dictionaryWithObject: fetchedObjects forKey: @"AnythingYouWant"];
UILocalNotification *localNotif = [[UILocalNotification alloc] init];
// ... do other setup tasks ...
localNotif.userInfo = myUserInfo;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
[localNotif release];

然后,当收到该通知时,您可以像这样阅读该词典:

- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notif 
{
    NSArray* myFetchedObjects = [notif.userInfo objectForKey: @"AnythingYouWant"];
    for(id object in myFetchedObjects)
    {
        // ... do other stuff ... 
    }
}

现在,希望澄清userInfo字典的工作原理。我不知道您的应用程序的详细信息,所以很难说,但我怀疑实际传递获取的对象不是您想要在这里做的,主要是因为我不确定您是否有任何保证接收委托方法将使用与发送方法相同的对象上下文。我建议可能将实体名称和谓词放在字典中,然后在接收时使用当前MOC当前的任何内容重新获取对象。

祝你好运!