Как сделать объект из fetchedResultsController в Plist? - PullRequest
0 голосов
/ 01 января 2011

Может кто-нибудь мне помочь. У меня есть приложение coredata, но мне нужно сохранить объекты из fetchedResultsController в NSDictionary для использования для отправки UILocalNotifications.

Должен ли я использовать NSMutableSet, или NSDictionary, или массив. Я не привык использовать коллекции, и я не могу придумать лучший способ сделать это.

Не могли бы вы дать мне подсказки о том, как это сделать, пожалуйста?

Спасибо

Mike

1 Ответ

1 голос
/ 01 января 2011

Если я правильно читаю ваш вопрос, вы спрашиваете, как упаковывать объекты в словарь userInfo UILocalNotification. На самом деле, это работает лучше для вас; Словари userInfo создаются вами и используются только вами.

Я не уверен, почему вы используете NSFetchedResultsController - этот класс предназначен для эффективного управления маршалингом управляемых объектов между классами пользовательского интерфейса (например, UITableView), тогда как здесь, похоже, вам лучше получить NSArray результаты из вашего управляемогоObjectContext и соответствующего запроса, например:

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 в этот момент.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...