Сохранение UIBezierPath с основными данными
Я работаю над приложением, где пользователь может рисовать на экране пальцем. Для этого я использую UIBezierPath. Мне нужно сохранить эти данные, которые являются NSArray, содержащим несколько объектов BezierPath. Как лучше всего поступить? Хранить в coredata, хранить в файле с использованием NSData? Премного благодарен.
2 ответов
вы ожидаете, что придется хранить несколько объектов? Вам нужно будет иметь возможность получить их на основе какого-либо фильтра или заказа? Я рекомендую использовать Core Data, чтобы сэкономить приличный объем работы при упаковке / распаковке данных. На самом деле нет причин хранить его в файле.
edit:
как сказал другой ответ, вы просто архивируете его в NSData. The UIBezierPath класс придерживается протокола NSCoding, поэтому вы можете что-то сделать вот как это архивировать:
NSData *bezierData = [NSKeyedArchiver archivedDataWithRootObject:bezierPath];
вы можете сохранить этот объект NSData в основных данных.
для расшифровки архива, предполагая, что у нас есть bezierData
объект NSData, вы можете сделать что-то вроде:
UIBezierPath *bezierPath = [NSKeyedUnarchiver unarchiveObjectWithData:bezierData];
архивируйте UIBezierPath в NSData и сохраните его как атрибут типа NSData в CoreData. У вас может быть более простой API, если вы сделаете его трансформируемым атрибутом.
Это довольно легко сделать, особенно для классов, которые уже поддерживают архивирование.
посмотреть этот документ для получения дополнительной информации.