Для очень небольших объемов данных, таких как несколько строк, но не изображение, вы также можете использовать гораздо более простые NSUserDefaults. Обычно это для сохранения настроек или некоторых постоянных данных.
Чтобы сохранить это:
[[NSUserDefaults standardUserDefaults] aString forKey:@"aStringKey];
if (![[NSUserDefaults standardUserDefaults] synchronize])
NSLog(@"not successful in writing the default prefs");
Чтобы прочитать это:
aString = [[NSUserDefaults standardUserDefaults] stringForKey:@"aStringKey];
Опять же, я бы не стал использовать это, если вам действительно нужна база данных или файловая система.
Если вы вводите больше данных, но их недостаточно для гарантии базы данных SQL или Core Data, тогда я бы записал эти данные в файл plist. Если все ваши данные являются объектами, то я бы сделал это:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:kSavedDocFileName];
NSMutableArray *myArrayToSave = [[NSMutableArray alloc] arrayWithCapacity: 48];
// 48 since you said in the comments that you have 48 of these
for (int i = 0; i < 48; i++) {
NSDictionary *myDict = [[NSDictionary alloc] initWithObjectsAndKeys:
sting1[i], @"firstStr", //I'm assuming your strings are in a C array.
string2[i], @"secondStr",// up to you to replace these with the right
url[i], @"myURL", //way to access your 48 pieces of data
nil];
[myArrayToSave addObject:myDict];
[myDict release];
}
if (![myArrayToSave writeToFile:path atomically:YES])
NSLog(@"not successful in saving the unfinished game");
И вы можете прочитать данные:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:kMySavedDocName];
NSArray *myLoadedData = [[NSArray alloc] initWithContentsOfFile:path];
for (int i = 0; i < 48; i++) {
NSDictionary *myDict = [myLoadedData objectAtIndex:i];
string1[i] = [myDict objectForKey:@"firstStr"];
string2[i] = [myDict objectForKey:@"secondStr"];
url[i] = [myDict objectForKey:@"url"];
}
[myLoadedData release];
Удостоверьтесь, что вы не просто копируете и вставляете этот код, поскольку я просто набрал его на макушке.
Теперь, если вы не хотите связываться со словарем, вы тоже можете это сделать. Это немного менее элегантно:
Сохранение:
NSMutableArray *myArrayToSave = [[NSMutableArray alloc] arrayWithCapacity: 48 * 3];
// 48 since you said in the comments that you have 48 of these three objects
for (int i = 0; i < 48; i++) {
[myArrayToSave addObject:string1[i]];
[myArrayToSave addObject:string2[i]];
[myArrayToSave addObject:url[i]];
}
if (![myArrayToSave writeToFile:path atomically:YES])
NSLog(@"not successful in saving the unfinished game");
Нагрузка:
NSArray * myLoadedData = [[NSArray alloc] initWithContentsOfFile: path];
for (int i = 0; i < 48; i++) {
string1[i] = [myLoadedData objectAtIndex:i * 3];
string2[i] = [myLoadedData objectAtIndex:i * 3 + 1];
url[i] = [myLoadedData objectAtIndex:i * 3 + 2];
}
[myLoadedData release];
Еще одно важное замечание: во всех этих примерах я предполагаю, что вы имеете дело с объектами (48 из них 3). Вот почему вы можете просто добавить их в словари и массивы, сохранить их и легко перезагрузить. Если вы имели дело с необъектами, такими как int, или c-строками, или BOOL, то вам придется использовать [NSNumber ...], чтобы превратить их в объекты, а затем [object ...], чтобы превратить их в не-объекты. ojects для начала.
Попробуйте некоторые из них, а затем найдите папку своего приложения в ~ / Library / Application Support / iPhone Simulator / Applications и найдите в папке Documents, откройте сохраненный файл и проверьте его содержимое. Всегда приятно проверять записываемые вами данные и видеть, как различные методы изменяют содержимое.
Удачи!