Fehler beim Überprüfen, ob eine Datei vorhanden ist
Ich versuche mit writeToFile in eine plist-Datei zu schreiben, bevor ich schreibe, überprüfe ich, ob die Datei existiert.
Dies ist der Code:
#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
Wenn die AddContactAction ausgeführt wird, erhalte ich keine Fehlermeldung, aber das Programm wird angehalten und ich komme zum Debugger. Wenn ich im Debugger auf Continue drücke, erhalte ich:
Program received signal: “EXC_BAD_ACCESS”.
Aber das ist wahrscheinlich nicht wichtig.
PS: Ich bin neu in der Mac-Programmierung und weiß nicht, was ich sonst noch versuchen soll, da ich keine Fehlermeldung bekomme, die mir sagt, was falsch läuft.
Der Pfad zur Datei lautet:
/Users/andre/Documents/Contacts.plist
Ich habe es früher versucht (mit dem gleichen Ergebnis), aber ich habe gelesen, dass Sie nur in den Dokumentenordner schreiben können:
/Users/andre/Desktop/NN/NSTableView/build/Debug/NSTableView.app/Contents/Resources/Contacts.plist
Hat jemand eine Idee oder gar eine Erklärung, warum dies passiert?