2015-09-30 3 views
0

Мои ошибки приложения после обновления до iOS 9. Невозможно записать файл .plist в проект.iOS 9 Ошибка записи .plist

-(BOOL)writeDictionaryToPlist:(NSDictionary*)plistDict { 
    NSString *path = [[NSBundle mainBundle] pathForResource:@"History" ofType:@"plist"]; 

    NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; 
    [dict setValuesForKeysWithDictionary:plistDict]; 

    NSDictionary *saveDict = [NSDictionary dictionaryWithDictionary:dict]; 
    BOOL result = [saveDict writeToFile:path atomically:YES]; 

    return result; 
} 

result является NO.

Но iOS 7 и iOS 8 отлично работают.

Как я могу это исправить?

+3

Этот код не работает ни в одной версии iOS, по крайней мере, на реальном устройстве. Пакет приложений доступен только для чтения. – rmaddy

+0

BTW - использование 'dict' бессмысленно. Просто вызовите 'writeToFile:' на 'plistDict' (как только у вас есть допустимый путь). – rmaddy

ответ

0

Использование dictionaryWithContentsOfFile: написать словарь из списка свойств

NSString *path = [[NSBundle mainBundle] pathForResource:@"History" ofType:@"plist"]; 
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithContentsOfFile:path]; 
BOOL result = [dict writeToFile:path atomically:YES]; 

ПРИМЕЧАНИЯ поскольку PLIST является ресурсом приложения вы не можете писать в этот файл, следовательно, создать файл PLIST в каталоге документов и запись в этот файл ,

NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
path = [path stringByAppendingString:@"/History.plist"]; 
BOOL result = [dict writeToFile:path atomically:YES]; 

Получить данные из списка свойств

NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithContentsOfFile:path]; 

UPDATE Добавить NSAppTransportSecurity как словарь и первый ребенок должен быть логическое значение имени NSAllowsArbitraryLoads установлен в YES.

<key>NSAppTransportSecurity</key> 
    <dict> 
     <key>NSAllowsArbitraryLoads</key> 
     <true/> 
    </dict> 
+1

Не используйте 'stringByAppendingString:' для создания пути. Используйте 'stringByAppendingPathComponent:'. – rmaddy

+0

Hi Mahanthesh Kumbar Спасибо за поддержку Я следую этому ответу, и у меня есть некоторая ошибка msg BSMachError: (os/kern) недействительная возможность (20) _BSMachError: (os/kern) неверное имя (15) Как я его исправить? – Jameskit

+0

проверьте обновленный ответ, добавьте NSAppTransportSecurity в файл plist –

Смежные вопросы