Содержание NSString to plist - PullRequest
       1

Содержание NSString to plist

0 голосов
/ 02 января 2012

Это дополнительный вопрос к тому, что я задал по поводу «Содержимое списка для NSString».Как я могу получить соединения NSString, показанные ниже, в файл plist.То, что я до сих пор читал в Google, - это то, что нет способа сделать это без помещения NSString в NSArray / NSdictonary.Но проблема в том, что если у меня есть NSString с содержимым, показанным ниже.

<?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>a.infoKey</key>
    <array>
        <string>a</string>
        <string>a</string>
        <string>a</string>
        <string></string>
    </array>
    <key>a.titleKey</key>
    <string>a</string>
    <key>r.infoKey</key>
    <array>
        <string>r</string>
        <string>r</string>
        <string>r</string>
        <string></string>
    </array>
    <key>r.titleKey</key>
    <string>r</string>
</dict>
</plist>

Если я добавлю приведенную выше строку в NSArray, а затем создаю новый файл 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">
<array>
    <string>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;
&lt;plist version="1.0"&gt;
&lt;dict&gt;
    &lt;key&gt;a.infoKey&lt;/key&gt;
    &lt;array&gt;
        &lt;string&gt;a&lt;/string&gt;
        &lt;string&gt;a&lt;/string&gt;
        &lt;string&gt;a&lt;/string&gt;
        &lt;string&gt;&lt;/string&gt;
    &lt;/array&gt;
    &lt;key&gt;a.titleKey&lt;/key&gt;
    &lt;string&gt;a&lt;/string&gt;
    &lt;key&gt;r.infoKey&lt;/key&gt;
    &lt;array&gt;
        &lt;string&gt;r&lt;/string&gt;
        &lt;string&gt;r&lt;/string&gt;
        &lt;string&gt;r&lt;/string&gt;
        &lt;string&gt;&lt;/string&gt;
    &lt;/array&gt;
    &lt;key&gt;r.titleKey&lt;/key&gt;
    &lt;string&gt;r&lt;/string&gt;
&lt;/dict&gt;
&lt;/plist&gt;
</string>
</array>
</plist>

Мне нужна точная строка (верхняя)добавлено в новый файл plist.

Ответы [ 2 ]

1 голос
/ 02 января 2012

У вас есть строка уже , правильно отформатированный список. Если вы поместите эту строку в другой объект plist, вы получите то, что видите, то есть экранированный plist-in-a-plist, а это не то, что вам нужно.

Итак, вам нужно просто взять строку и сохранить ее как файл напрямую. Есть несколько способов сделать это, но самый простой способ сделать это - использовать встроенную возможность NSString для записи себя в файл, например так:

[myPlistString writeToFile:somePath atomically:YES encoding:NSUTF8StringEncoding error:NULL];

Обратите внимание, что тип кодировки должен быть UTF8. Это то, что отражено в собственном заголовке строки plist, так что это тип кодировки, который вы должны использовать. (Очевидно, что также используйте параметр error, если вы делаете это в рабочем коде.)

После сохранения в файл (в данном случае на somePath) вы не говорите, что вам нужно с ним делать, но вы можете загрузить его обратно непосредственно в иерархию объектов с помощью класса NSPropertyListSerialization.

1 голос
/ 02 января 2012

Просто сохраните его в файл в файл с именем [something].plist, используя -[NSString writeToFile:atomically:encoding:error:]

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