如何将对象从 fetchedResultsController 到 Plist?

Posted

技术标签:

【中文标题】如何将对象从 fetchedResultsController 到 Plist?【英文标题】:How to objects from a fetchedResultsController to a Plist? 【发布时间】:2011-01-01 18:39:27 【问题描述】:

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

我应该使用 NSMutableSet、NSDictionary 还是数组。我不习惯使用集合,也想不出最好的方法。

能否请您给我一些关于如何做到这一点的线索?

谢谢,

迈克

【问题讨论】:

【参考方案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 重新获取对象。

祝你好运!

【讨论】:

以上是关于如何将对象从 fetchedResultsController 到 Plist?的主要内容,如果未能解决你的问题,请参考以下文章

如何将月份值从一个 Date 对象复制到另一个对象? [复制]

如何将对象从 fetchedResultsController 到 Plist?

如何将 LocationRequest 对象从活动传递到服务?

如何从 XML 的特定部分将 XML 序列化为对象?

如何将对象从 MongoDB 发送到玉?

如何将对象从 windowSWF 传递到 JSFL?