Это не дает прямого ответа на ваш вопрос;но вместо того, чтобы хранить свой граф объектов как вложенные словари, не могли бы вы вместо этого использовать подклассы NSObject
для инкапсуляции ваших данных, чтобы вам не приходилось обходить иерархии словарей?Например, (заметьте, я ничего не знаю о уровне модели вашего приложения ...) Не могли бы вы разбить концептуальную модель на объекты Project и Task, например,
@interface Task : NSObject <NSCoding>
{
NSString *_name;
NSString *_owner;
NSString *_assignedBy;
BOOL _complete;
NSDate *_timeAssigned;
// etc.
}
А затем проекты, в свою очередь, составленыЗадач:
@interface Project : NSObject <NSCoding>
{
NSString *_name;
NSString *_dateStarted;
NSMutableArray *_tasks;
// etc.
}
Это более объектно-ориентированный способ структурирования уровня модели приложения.В этом механизме нет ничего, что помешало бы вам сериализовать данные в plist, если ваши классы соответствуют протоколу NSCoding
.