Я пытаюсь записать в plist-файл, используя writeToFile, прежде чем писать, я проверяю, существует ли файл.
Это код:
#import "WindowController.h"
@implementation WindowController
@synthesize contacts;
NSString *filePath;
NSFileManager *fileManager;
- (IBAction)addContactAction:(id)sender {
NSDictionary *dict =[NSDictionary dictionaryWithObjectsAndKeys:
[txtFirstName stringValue], @"firstName",
[txtLastName stringValue], @"lastName",
[txtPhoneNumber stringValue], @"phoneNumber",
nil];
[arrayContacts addObject:dict];
[self updateFile];
}
- (void)awakeFromNib {
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
filePath = [rootPath stringByAppendingPathComponent:@"Contacts.plist"];
fileManager = [NSFileManager defaultManager];
contacts = [[NSMutableArray alloc] init];
if ([fileManager fileExistsAtPath:filePath]) {
NSMutableArray *contactsFile = [[NSMutableArray alloc] initWithContentsOfFile:filePath];
for (id contact in contactsFile) {
[arrayContacts addObject:contact];
}
}
}
- (void) updateFile {
if ( ![fileManager fileExistsAtPath:filePath] || [fileManager isWritableFileAtPath:filePath]) {
[[arrayContacts arrangedObjects] writeToFile:filePath atomically:YES];
}
}
@end
Когда выполняется addContactAction, я не получаю никакой ошибки, но программа останавливается и приводит меня к отладчику. Когда я нажимаю продолжить в отладчике, я получаю:
Program received signal: “EXC_BAD_ACCESS”.
Но это, вероятно, не важно.
PS: я новичок в программировании на Mac, и я не знаю, что еще попробовать, так как я не получаю сообщение об ошибке, которое говорит мне, что происходит не так.
Путь к файлу:
/ Пользователи / Андрэ / Документы / Contacts.plist
Ранее я пробовал это (с тем же результатом), но я читал, что вы можете писать только в папку документов:
/ Пользователи / Андрэ / Desktop / NN / NSTableView / сборки / Debug / NSTableView.app / Содержание / Ресурсы / Contacts.plist
У кого-нибудь есть идея или даже объяснение, почему это происходит?