Если я правильно читаю ваш вопрос, вы спрашиваете, как упаковывать объекты в словарь 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 в этот момент.
Удачи!