Как программно создавать файлы PLIST в iphone - PullRequest
15 голосов
/ 14 июля 2011

Я искал создание файла plist в папке «Мои документы» приложения программно в задаче C. Я создаю папку в каталоге документов:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectoryPath = [paths objectAtIndex:0];
NSString *path = [NSString stringWithFormat:@"%@/Data.plist", documentsDirectoryPath];

Я пытаюсь создать файл plist, который будет выглядеть как XMLфайл./ **** Требуемый XML-файл **** /

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
    <key>height</key>
    <integer>4007</integer>
    <key>name</key>
    <string>map</string>
    <key>width</key>
    <integer>6008</integer>
</dict>
</array>
</plist>

/ **** Полученный файл через код **** /

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>height</key>
    <string>4007</string>
    <key>name</key>
    <string>map</string>
    <key>width</key>
    <string>6008</string>
</dict>
</plist>

Требуемый файл требуетмассив и внутри массива у нас есть объект словаря.Как я могу изменить это?Я также знаю, как записать файл в путь, но основная проблема заключается в том, как создать файл plist и затем прочитать его?

Ответы [ 3 ]

66 голосов
/ 14 июля 2011

Файл PLIST, также известный как файл «Списка свойств», использует формат XML для хранения таких объектов, как массивы, словари и строки.

Этот код можно использовать для создания, добавления значений и извлечения значений из файла plist.

//Get the documents directory path
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"plist.plist"];
NSFileManager *fileManager = [NSFileManager defaultManager];

if (![fileManager fileExistsAtPath: path]) {

    path = [documentsDirectory stringByAppendingPathComponent: [NSString stringWithFormat:@"plist.plist"] ];
}

NSMutableDictionary *data;

if ([fileManager fileExistsAtPath: path]) {

    data = [[NSMutableDictionary alloc] initWithContentsOfFile: path];
}
else {
    // If the file doesn’t exist, create an empty dictionary
    data = [[NSMutableDictionary alloc] init];
}

//To insert the data into the plist
[data setObject:@"iPhone 6 Plus" forKey:@"value"];
[data writeToFile:path atomically:YES];

//To retrieve the data from the plist
NSMutableDictionary *savedValue = [[NSMutableDictionary alloc] initWithContentsOfFile: path];
NSString *value = [savedValue objectForKey:@"value"];
NSLog(@"%@",value);
4 голосов
/ 14 июля 2011
3 голосов
/ 14 июля 2011

Обратите внимание, что если вы просто хотите, чтобы один файл plist содержал данные, вам не нужно создавать и сохранять их. Существует механизм под названием NSUserDefaults. Вы делаете что-то вроде

[[NSUserDefaults standardUserDefaults] setInteger:1234 forKey:@"foo"];

а вы читаете как в

NSInteger foo=[[NSUserDefaults standardUserDefaults] integerForKey:@"foo"];
// now foo is 1234

Подготовка файла к сохранению, запись его в файл, повторное чтение при следующем запуске приложения - выполняется автоматически для вас !!

Прочитайте официальный справочник и официальный документ .

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