Сохранение 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, если вы сделаете его трансформируемым атрибутом.

Это довольно легко сделать, особенно для классов, которые уже поддерживают архивирование.

посмотреть этот документ для получения дополнительной информации.

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdNSAttributes.html