Я бы выбрал простую древовидную структуру с этим базовым классом:
@interface Folder
{
NSString *folderName;
NSArray *contents;
}
@property (nonatomic, copy) NSString *folderName;
@property (nonatomic, retain) NSArray *contents;
- (id)initWithName:(NSString *)aName;
// Adds a folder to this folder and returns a reference to it or nil if name is already present
- (Folder *)addFolderWithName:(NSString *)aFolderName;
// Add something, returns false if operation was unsuccessful, for example adding a folder with
// a name that has already been used in this folder
- (BOOL)addContent:(id)someContent;
@end
Содержимое может быть любого типа, что вам нужно. Методы, которые вам нужны, зависят от того, как вы хотите использовать дерево. Когда дело доходит до деревьев, это возможно:)