Oprócz bardzo dobrego podejścia NSUserDefaults, istnieje jeszcze jeden łatwy sposób na przechowywanie danych w NSArray, NSDictionary lub NSData w pliku. Można korzystać z tych metod, a także:
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag
odpowiednio (dla NSDictionary):
+ (id)dictionaryWithContentsOfFile:(NSString *)path
wystarczy podać prawidłową ścieżkę do lokalizacji. Zgodnie z Przewodnikiem programowania aplikacji iOS katalog/Library/Caches będzie najlepszym miejscem do przechowywania danych, które należy utrwalić między uruchomieniami aplikacji. (Patrz here)
W celu zapisania/załadowania słownika z zachowanej zwanych „menedżerów” w dokumencie directoy można użyć następujących metod:
-(void) loadDictionary {
//get the documents directory:
NSArray *paths = NSSearchPathForDirectoriesInDomains (NSCachesDirectory, NSUserDomainMask, YES);
NSString *cacheDirectory = [paths objectAtIndex:0];
//create a destination file name to write the data :
NSString *fullFileName = [NSString stringWithFormat:@"%@/managers", cacheDirectory];
NSDictionary* panelLibraryContent = [NSDictionary dictionaryWithContentsOfFile:fullFileName];
if (panelLibraryContent != nil) {
// load was successful do something with the data...
} else {
// error while loading the file
}
}
-(void) storeDictionary:(NSDictionary*) dictionaryToStore {
//get the documents directory:
NSArray *paths = NSSearchPathForDirectoriesInDomains
(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cacheDirectory = [paths objectAtIndex:0];
//make a file name to write the data to using the
//cache directory:
NSString *fullFileName = [NSString stringWithFormat:@"%@/managers", cacheDirectory];
if (dictionaryToStore != nil) {
[dictionaryToStore writeToFile:fullFileName atomically:YES];
}
}
Zresztą takie podejście jest bardzo ograniczona i trzeba poświęć dużo dodatkowej pracy, jeśli chcesz przechowywać bardziej złożone dane. W takim przypadku interfejs CoreData API jest bardzo przydatny.
Perfect! Dzięki! – Toastor
'-setValue: forKey:' i '-valueForKey', odpowiednio, są również w porządku. Co więcej, "standardoweUserDefaults" są zawsze kopii zapasowej, gdy iDevice jest zsynchronizowany. To świetnie, jeśli chcesz uwzględnić zakupy w aplikacji. – SK9
Dziękuję doskonale działa bardzo dobrze –