2011-01-01 8 views
0

Kann mir jemand helfen? Ich habe eine Coredata-Anwendung, aber ich muss die Objekte von einem abgerufenenResultsController in einem NSDictionary speichern, um UILocalNotifications zu senden.Wie Objekte von einem abgerufenenResultsController zu einem Plist?

Sollte ich ein NSMutableSet oder ein NSDictionary oder ein Array verwenden. Ich bin es nicht gewohnt, Sammlungen zu verwenden, und ich kann den besten Weg nicht herausfinden.

Könnten Sie mir bitte bitte Hinweise geben, wie das geht?

Danke,

Mike

Antwort

1

Wenn ich Ihre Frage richtig bin zu lesen, Sie fragen, wie Sie Objekte in das Wörterbuch userinfo eines UILocalNotification packen sollte. Wirklich, es funktioniert jedoch am besten für Sie; userInfo-Wörterbücher werden von Ihnen erstellt und nur von Ihnen verwendet.

Ich bin mir nicht sicher, warum Sie einen NSFetchedResultsController verwenden würden - diese Klasse dient zum Verwalten des Marshalling von verwalteten Objekten zwischen UI-Klassen (wie UITableView) effizient, während hier klingt es besser, nur ein NSArray zu bekommen der Ergebnisse von Ihrem managedObjectContext und dem entsprechenden Antrag wie folgt aus:

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

, wo Sie einen vorbestehenden verwaltete Objektkontext und Anfrage. Sie müssen hier keinen NSFetchedResultsController verwenden.

Von dort wäre die einfachste Vorschlag, Ihr userinfo Wörterbuch so bauen:

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]; 

Dann, wenn es darum geht, dass eine Benachrichtigung zu erhalten, können Sie dieses Wörterbuch wie folgt lesen:

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

Jetzt ist hoffentlich geklärt, wie das userInfo-Wörterbuch funktioniert. Ich kenne die Details Ihrer App nicht, daher ist es schwer zu sagen, aber ich bin misstrauisch, dass es eigentlich NICHT das ist, was Sie hier tun wollen, hauptsächlich, weil ich mir nicht sicher bin, ob Sie eine Garantie dafür haben Die empfangende Delegatmethode wird mit demselben Objektkontext wie die sendende Methode arbeiten. Ich würde vielleicht vorschlagen, den Namen und das Prädikat der Entität in das Dictionary zu setzen und dann die Objekte zum Zeitpunkt des Empfangs mit dem aktuellen MOC zurückzuspeichern.

Viel Glück!

Verwandte Themen