Во-первых, вы не можете писать что-либо в вашем mainBundle.Для того, чтобы написать вам список, вам необходимо скопировать его в каталог документов.Это делается так:
- (void)createEditableCopyOfIfNeeded
{
// First, test for existence.
BOOL success;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writablePath = [documentsDirectory stringByAppendingPathComponent:@"Template.plist"];
success = [fileManager fileExistsAtPath:writablePath];
if (success)
return;
// The writable file does not exist, so copy from the bundle to the appropriate location.
NSString *defaultPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Template.plist"];
success = [fileManager copyItemAtPath:defaultPath toPath:writablePath error:&error];
if (!success)
NSAssert1(0, @"Failed to create writable file with message '%@'.", [error localizedDescription]);
}
Таким образом, вызов этой функции проверит, существует ли файл в каталоге документов.Если это не так, он копирует файл в каталог документов.Если файл существует, он просто возвращается.Далее вам просто нужно получить доступ к файлу, чтобы иметь возможность читать и писать в него.Для доступа вам просто нужен путь к каталогу документов и добавить имя файла в качестве компонента пути.
NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *filePath = [docDir stringByAppendingPathComponent:@"Template.plist"];
Чтобы получить данные из plist:
NSMutableArray *array = [[NSMutableArray alloc] initWithContentsOfFile:filePath];
Для записифайл возвращается в каталог документов.
[array writeToFile:filePath atomically: YES];