Помимо очень хорошего подхода NSUserDefaults, существует еще один простой способ хранения данных из NSArray, NSDictionary или NSData в файле. Вы также можете использовать эти методы:
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag
соответственно (для NSDictionary):
+ (id)dictionaryWithContentsOfFile:(NSString *)path
вам просто нужно указать правильный путь к локации. Согласно Руководству по программированию приложений для iOS, каталог / Library / Caches будет лучшим местом для хранения данных, которые необходимо сохранить между запусками приложения. (см. здесь )
Чтобы сохранить / загрузить словарь из поля под названием «менеджеры» в вашем документе, вы можете использовать следующие методы:
-(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];
}
}
В любом случае, этот подход очень ограничен, и вам придется потратить много дополнительной работы, если вы хотите хранить более сложные данные. В этом случае API CoreData очень удобен.