Как загружать и хранить файлы в Cocoa с помощью Core Data?

У меня есть приложение, к которому я хотел бы иметь возможность загружать файлы. Я мог представить себе сериализацию данных, помещая их в массив, затем сериализуя массив и помещая его в Core Data, но это не совсем правильно. Я мог бы также представить себе копирование файлов в поддерживающие файлы приложения, получение NSURL для этих объектов и сохранение массива или NSURL.

В любом случае NSURL не является атрибутом, а также NSArray в Core Data.

Еще одна потенциальная проблема – моя цель – сделать приложение для iPhone и настольных приложений, которые синхронизируются вместе. Поэтому я хочу загружать изображения с моего iPhone или загружать файлы с рабочего стола, и все работает нормально. Я не уверен, что копирование файлов будет совместимо с iPhone. Я хочу также загрузить любой файл.

ВОПРОС:
Как хранить изображения на iOS?
Как хранить файлы в Mac OS X?
Я храню двоичные данные в основных данных? Копировать файлы в каталог и хранить NSURL?

ВОПРОС БОНУСА:
Как синхронизировать между приложениями iOD и Mac OS X?

ПОЯСНЕНИЯ:
Извините за любую путаницу из этого вопроса. Вот более чистая версия:

Моя основная модель данных состоит из объекта «Entry», который имеет атрибут NSString и отношения «один ко многим» с объектом «Файл». Этот файловый объект имеет имя атрибут NSString и второй атрибут, который еще не определен. Этот второй атрибут может быть (из того, что я могу придумать) трансформируемым представлением NSData некоторого файла, трансформируемым представлением NSURL, которое указывает на некоторый файл (я все еще не совместим с тем, как работает преобразование, поэтому я мог ошибаться обо всем этом …) или двоичный блок данных файла. Могут быть и другие варианты, но дело в том, чтобы сохранить или загрузить файлы в эту программу из OS X или iOS и синхронизировать базы данных вместе.

У меня есть приложение OS X с табличным представлением, в котором отображаются имена всех записей. Выберите имя записи, и у вас будет список файлов, на которые он указывает. Дважды щелкните файл, и он должен открыть приложение по умолчанию так же, как и с Finder. Вы также должны иметь возможность экспортировать файлы из Core Data и сохранять их обратно в каталог за пределами приложения.

У меня также есть приложение iOS, которое позволяет мне делать снимок или несколько изображений, сохранять их в «Файловые» объекты, указывать на эти файлы из объекта «Запись» (используя ту же модель Core Data, что и приложение OS X), и offine sync с моим OS X Application, поэтому оба приложения имеют одинаковые данные.

Надеюсь, это прояснит ситуацию.

Спасибо за помощь,

Chet

3 Solutions collect form web for “Как загружать и хранить файлы в Cocoa с помощью Core Data?”

Я считаю, что вы еще не очень хорошо знакомы с Core Data. Я настоятельно рекомендую погрузиться в документацию Core Data.

В любом случае, насколько я понимаю, возможная реализация вашей модели данных может выглядеть так: введите описание изображения здесь

У вашего пользователя будут объекты NSSet для файлов, каждый объект File будет отвечать за сохранение имени и его URL-адреса в каталоге Application Documents.

Что касается вашей второй проблемы, я не совсем понимаю вопрос.

Надеюсь, это поможет, Cheers!

Core Data позволяет вам установить опцию для внешнего хранения атрибутов, а затем IT решит, хранить ли этот объект во внешнем файле.

Таким образом, вы должны создать атрибут, называемый fileData (binary) а в вашем подклассе использовать NSData а затем просто установить file.fileData = yourFileData и Core Data решат, где его хранить.

Не нужно отслеживать URL самостоятельно. Не забудьте сохранить какой-то идентификатор (имя файла), чтобы вы могли получить нужный файл.

РЕДАКТИРОВАТЬ

BTW, если вы просто хотите сохранить образ атрибутивной строки, тогда лучше использовать трансформируемый атрибут. Transformable полезен, если вы хотите автоматическое преобразование в NSImage, UIImage или NSAttributedString (или какой-либо другой архивируемый объект).

установите такой файл

 NSData * data = [NSData dataWithContentsOfURL:...]; file.fileData = data; 

Чтобы записать данные в файл, используйте

 bool result = [file.fileData writeToURL:atomically:]; 

Чтобы синхронизировать основные данные между устройствами, я бы посоветовал вам взглянуть на этот сайт, где я разместил информацию об интеграции Core Data и iCloud для приложений iOS и OS X. Это выходит за рамки ответа на этом сайте.

http://ossh.com.au/design-and-technology/software-development/

  • Магическая запись, несколько конфигураций и Restkit
  • iOS 9 CoreData / ICloud - нет такого документа по URL-адресу
  • coredata - переход на целевую группу приложения
  • Создайте копию объекта NSManagedObject
  • Ошибка: дублировать символы для архитектуры armv7 после изменения. Модель данных ядра
  • Ошибка исходных данных - возвращаемое значение nil для раздела name key path 'sectionIdentifier'
  • Ошибка: не удалось найти перегрузку для «title», которая принимает предоставленные аргументы
  • Основные данные - Не удалось загрузить оптимизированную модель по пути
  • Ошибка в тестировании блока ошибок Xcode 7
  • NSInternalInconsistencyException (недопустимое обновление: недопустимое количество строк в разделе 0)
  • Основной фоновый поток данных NSManagedObjectContext слияния
  • Interesting Posts

    Включить немодульный заголовок внутри фреймворческой ошибки с Parse 1.8.2 SDK

    Как установить цвет фона для UIPageViewController?

    Как можно вернуться к предыдущему виду программно без UINavigationController?

    Ссылка на контроллер вида segue source view

    Как вы настраиваете заголовок на UITabBarItem?

    Есть ли функция для преобразования UIColor в Hue Saturation Brightness?

    Невозможно создать контекст управляемого объекта в iOS

    Пользовательская функция MKOverlayRenderer drawMapRect не рисовала полигоны

    Swift 3: Невозможно вызвать dataTask с помощью списка аргументов типа error

    Пользовательские переходы UIViewController с animateWithDuration в Swift

    преобразовать тип ExtAudioFileRef в тип AudioFileID в iOS

    Рекомендуемый способ тестирования функции iOS для версии во время выполнения

    Вращение объекта OpenGL ES вокруг оси Z

    Ошибка компиляции Pjsip в iphone-симуляторе, который не может быть настроен в ios 7

    Как отправить NSString на другой контроллер представления

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.