2

В разработке моего первого серьезного приложения для iPhone (что я хотел бы получить на AppStore) мне нужен хороший способ представления моих данных. Вместо того, чтобы идти с основными данными, я (как ни странно, я думаю) решил использовать классы для представления моих данных.Устойчивость данных в приложениях iPhone

Я создал три класса, MMDot, MMShowMovement и MMShow. MMShowMovement содержит экземпляры класса MMDot в массиве, поскольку MMS-сообщение содержит экземпляры MMShowMovement. Казалось, что это хороший способ сделать это, у каждого класса есть много логики, которая должна быть с ним, поэтому я подумал, что классы выглядели как хороший способ представить все эти данные.

Мой вопрос в том, есть ли простой способ сохранить экземпляры этих классов, чтобы я мог восстановить данные после повторного открытия приложения? Я сделал приложения на OS X с помощью NSKeyedArchiver, будет ли он похож на iPhone? Было бы проще начать снова с использованием Core Data (эти объекты очень сложны, особенно MMDot с примерно 15 переменными экземпляра, теперь, когда я смотрю на него, может быть, не на THAT-комплекс)?

Я действительно в затруднении здесь.

+1

Я бы повторно модель использовать CoreData –

ответ

2

Вы можете абсолютно бесплатно использовать NSKeyedArchiver для сохранения своих объектов. Я поклонник любого метода, решение в основном связано с вашими потребностями приложения. Я не думаю, что будет много работы по перепроектированию ваших объектов в CoreData. Не зная ничего о своем приложении, я бы сказал, что если вы делаете простую настойчивость с простой моделью, вам может не понадобиться Core Data, если у вас сложные отношения и часто будут чтение/сохранение данных во время сеанса приложения. Основные данные, вероятно, являются способом идти.

+1

Определенно согласен с этой оценкой - шпоночным архивирования и разархивирования поддерживается на iPhone, так что если у вас есть относительно простые объекты и знакомы с архитектурой, пойти на это. С другой стороны, Core Data * может * быть очень полезным для объектных отношений - он также предоставляет множество других преимуществ (см. Http://stackoverflow.com/questions/1883879/why-should-i-use-core-data -for-my-iphone-app/1883957 # 1883957) – Tim

+0

MMDot имеет около 15 атрибутов, большинство из которых являются NSIntegers и NSStrings, классы MMShow и MMShowMovement имеют по три атрибута каждый. MMShowMovement будет содержать от 40 до 100 экземпляров MMDot, а MMS-сообщение будет содержать около 4 экземпляров MMShowMovement. Единственное отношение между классами состоит в том, что MMDot имеет атрибут «counts», а MMShowMovement будет хранить NSInteger общего количества отсчетов. Думаю, я попытаюсь использовать архивирование. Если будет похоже, что это будет слишком медленно. Я перейду к Core Data. –

0

Если у вас много экземпляров объектов, вам, вероятно, лучше использовать Core Data - это поможет кэшировать вещи, поможет вам с запросами получить конкретные наборы объектов и т. Д. KeyArchiving действительно намного полезнее, если вы сберегаете несколько экземпляров, но имеете некоторые недостатки - в частности, сложнее отслеживать утечки памяти из Unarchived объектов.

Основные данные также могут выполнять подкачку результатов для вас, так что вы не загружаете содержимое entre большого массива, если оно вам не нужно.

0

Я искал сериализацию своих классов на днях и пошел с использованием NSUserDefaults. Я просто даю всем внутренним объектам уникальный ключ, основанный на объекте. Казалось, что я работаю быстро.

Написал блог об этом здесь: http://technolojiadev.blogspot.com/2009/12/serialize-this.html