Простой способ сохранить объекты в файле - добавить их в NSDictionary
, а затем использовать NSArchiver
для архивирования словаря в данные.
Например, в приложении на основе документов:
- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError {
if ([typeName isEqualToString:@"YourTypeName"]) {
//Create a Dictionary
NSMutableDictionary *dictToSave = [NSMutableDictionary dictionary];
//Add the first image to the dictionary
[dictToSave setObject:image1 forKey:@"Image1"];
//Add the first image's text
[dictToSave setObject:image1text forKey:@"Image1Text"];
//etc.
[dictToSave setObject:image2 forKey:@"Image2"];
[dictToSave setObject:image2text forKey:@"Image2Text"];
[dictToSave setObject:image3 forKey:@"Image3"];
[dictToSave setObject:image3text forKey:@"Image3Text"];
//Return the archived data
return [NSArchiver archivedDataWithRootObject:dictToSave];
}
//Don't generate an error
outError = NULL;
return nil;
}
Чтобы прочитать эти данные, просто разархивируйте словарь и установите объекты:
- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName
error:(NSError **)outError {
if ([typeName isEqualToString:@"MyTypeName"]) {
NSMutableDictionary *readDict =
[NSUnarchiver unarchiveRootObjectWithData:data];
image1 = [readDict objectForKey:@"Image1"];
image1text = [readDict objectForKey:@"Image1Text"];
image2 = [readDict objectForKey:@"Image2"];
image2text = [readDict objectForKey:@"Image2Text"];
image3 = [readDict objectForKey:@"Image3"];
image3text = [readDict objectForKey:@"Image3Text"];
}
outError = NULL;
return YES;
}
Вам также необходимо определить свой собственный тип файла в plist-файле вашего приложения.