2016-05-13 3 views
0

Ich habe in meinem System eine Liste von Ländern und eine Liste von Staaten für jedes Land der Welt. Diese Inhalte werden in meiner Datenbank gespeichert, und ich kann über eine REST-Anfrage darauf zugreifen. Länder und Staaten, in der These, sind ein statischer Inhalt (ich plane nicht, diese Register zu ändern, aber schließlich, vielleicht werde ich ...). Im Moment mache ich eine GET-Anfrage, jedes Mal wenn ich ein Land brauche, und jedes Mal, wenn ich einen Staat brauche, mache ich auch ein GET, indem ich die ID des Landes verwende. Meine Frage ist: Gibt es ein gutes Muster, das diese Art von Frage abdeckt? Wo soll ich Länder und Staaten in meinem System behalten? Soll ich es auf NSUserDefaults speichern?Sollte ich den Inhalt von PickerViews in NSUserDefaults beibehalten?

Antwort

1

Sie können eine JSON-Datei die Liste der Ländername und Name in Ihrem Anwendungspaket enthalten :) Da Länder und Staaten wird nicht ändern sehr häufig fest codierten Daten in Ihrem Anwendungspaket :)

haben ihre sichere Nehmen wir an, Sie Ihre Länderdaten in einer Datei Countries.json

Sie unter Verwendung

genannt speichernlesen

Thats it :) Sie haben Ihre Länderauswahl mit Ihnen Kumpel :)

ODER

Wenn Sie nicht wollen, das Land auf eigene Faust speichern, sobald Sie die Länderliste mit GET-Anfrage holen speichern Sie die Antwort in einer Datei in Ihrer Anwendung Dokumentordner :)

Und ab nächste Zeitdaten aus der gleichen Datei lesen :)

NSString* filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString* fileName = @"countries.json"; 
NSString* fileAtPath = [filePath stringByAppendingPathComponent:fileName]; 
if ([[NSFileManager defaultManager] fileExistsAtPath:fileAtPath]) { 
    NSData *data = [NSData dataWithContentsOfFile:fileAtPath]; 
    NSError *localError = nil; 
    NSDictionary *parsedObject = [NSJSONSerialization JSONObjectWithData:data options:0 error:&localError]; 
} 
else { 
     //make webservice call fetch the country list and write it to file :) 
} 

die gesamte Welt-Länderliste und ihr Kapital in Benutzervoreinstellung Speicher ist nicht preferrable Kumpel :) und es jedes Mal vom Server erhalten wird Verzögerung frönen Picker den Benutzer zu zeigen :)

mein Vorschlag So speichern Sie eine Datei in Anwendungsbündel und lese es, wann immer du den Datenpartner willst :)

0

Ich empfehle nicht, diese Informationen auf NSUserDefaults zu speichern, Sie haben nicht genug, um CoreData zu verwenden, aber Sie können archivieren!

Es gibt eine gute Verbindung, wenn Sie NSUserDefault verwenden möchten trotzdem: Using NSUserDefaults on arrays

Verwandte Themen