Как я могу перезаписать содержимое файла plist?(iPhone / iPad) - PullRequest
1 голос
/ 21 января 2012

В моем основном приложении есть файл plist, который я хочу обновить через свое приложение. Вот код, который я использую, проблема в том, что plist, похоже, не обновляется. Мой код неверен или есть другая проблема?

// Data
NSMutableDictionary *data = [[NSMutableDictionary alloc] init];
[data setObject:self.someValue forKey:@"Root"];

// Save the logs
NSString *filepath = [[NSBundle mainBundle] pathForResource:@"MyFile" ofType:@"plist"];
[data writeToFile:filepath atomically:YES];

Пожалуйста, кто-нибудь может мне помочь?

Ответы [ 2 ]

3 голосов
/ 21 января 2012

IOS ограничивает запись в связанные файлы. Если вам нужен записываемый список, вам нужно скопировать его в папку «Документы» вашего приложения и написать туда.

2 голосов
/ 21 января 2012

Вот как я делаю это в одном из моих приложений

//get file paths
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [documentPaths objectAtIndex:0];
NSString *documentPlistPath = [documentsDirectory stringByAppendingPathComponent:@"document.plist"];
NSString *bundlePath = [[NSBundle mainBundle] bundlePath];  
NSString *bundlePlistPath = [bundlePath stringByAppendingPathComponent:@"bundle.plist"];

//if file exists in the documents directory, get it
if([fileManager fileExistsAtPath:documentPlistPath]){            
    NSMutableDictionary *documentDict = [NSMutableDictionary dictionaryWithContentsOfFile:documentPlistPath];
        return documentDict;
} 
//if file does not exist, create it from existing plist
else {
    NSError *error;
    BOOL success = [fileManager copyItemAtPath:bundlePlistPath toPath:documentPlistPath error:&error];
    if (success) {
        NSMutableDictionary *documentDict = [NSMutableDictionary dictionaryWithContentsOfFile:documentPlistPath];
        return documentDict;
    }
    return nil;
}

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...