Я занимаюсь дизайном проекта, и ничего не было реализовано - поэтому я все еще прохожу мыслительный процесс, чтобы определить, насколько Core Data пригодна для проекта.
Вот мой запрос -
Я хочу создать модель управляемого объекта, используя базовые данные для представления некоторых объектов на стороне сервера, например, папки, файла и т. Д.
Все объекты (папка, файл и т. Д.) Доступны через API-интерфейсы XMLRPC, которые возвращают некоторый правильно сформированный XML.
Например, может существовать API с именем getFolders, который может возвращать следующее -
<xml>
<folders>
<folder id=1>
<name>Test 123</name>
<files>
<file id=100>
<name>hello.txt</name>
<path>./hello.txt</path>
</file>
...
</files>
</folder>
...
</folders>
Аналогичным образом может существовать API-интерфейс updateFolders, который работает с существующим элементом папки, и для простоты скажем, он просто обновляет имя папки. Запрос на это выложит что-то вроде следующего -
<xml>
<method name="updateFolder">
<folder_id="1">
<params>
<param name="folder_name" value="Test"/>
</params>
</method>
Я пытаюсь выяснить -
1. How can I represent folder as a managed object i.e., how do I initialize it from the above XML
2. Once initialized, how can I handle an update to it using the updateFolder API shown above
Кажется, что NSPersistentStore, такой как XMLStoreType, указывает непосредственно на фактические файлы XML, которые содержат окончательные данные. В моем случае XML - это просто то, что возвращается из вызова XMLRPC, а фактические данные хранятся в БД на стороне сервера. Поэтому, поскольку хранилища не являются прямыми представлениями объектов (или того, где хранятся объекты), мне было интересно, должен ли я создать собственный NSAtomicStore и обрабатывать загрузку и сохранение для инициализации и обновления соответственно. Вот ссылка на это для NSAtomicStore -
https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/AtomicStore_Concepts/Articles/asLoading.html#//apple_ref/doc/uid/TP40005298
Пожалуйста, дайте мне знать, если это имеет смысл или есть лучший способ справиться с этим.