Как сохранить NSDictionary с объектами NSValue в файл - PullRequest
0 голосов
/ 04 августа 2020

У меня есть плоский NSDictionary с ключами как объекты NSNumber и значениями как объекты NSValue. Как мне сохранить это в файл?

Я пробовал записывать словарь непосредственно в файл, а также архивировать в NSData, но оба терпят неудачу.

// Try 1: Archive
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:dictionary];

// Try 2: Write to file
[dictionary writeToFile:filePath atomically:YES];

Объекты NSValue содержат строковые указатели .

[NSValue valueWithPointerString:text];

1 Ответ

0 голосов
/ 04 августа 2020

Вы можете записать его как список свойств, но тогда вам нужно заменить ключи NSNumber, например, строками, а объекты NSValue должны быть «частью семейства». Это хороший вариант, если вы можете обойти эти требования и серьезно обдумать его.

Затем вы можете загрузить с помощью

dict = [NSDictionary dictionaryWithContentsOfURL...

и сохранить с помощью

[dict writeToUrl...

, что приятно, легко и без сложностей сегодняшнего NSSecureCoding.

В противном случае вам нужно углубиться в ключевой архиватор и убедиться, что все ключи и объекты реализуют NSCoding / NSSecureCoding. Даже здесь это может быстро превратиться в настоящую миссию, но это «нормальный» путь для словаря с настраиваемыми объектами. Изменить: если вы используете NSString и NSNumber, у вас не должно возникнуть проблем.

Однако, если у вас есть настраиваемые объекты, например, ваши значения - это какая-то странная вещь, которая не реализует NSCoding, тогда вы должны проконсультироваться с Archives and Serializations Руководство по программированию в docs. Вы можете указать go там в любом случае для любого из этих вариантов, но, может быть, сейчас проще всего первый?

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