如何导入分层文件夹样式数据

How to import hierarchical folder style data

我有一个对象数组,我需要迭代这些对象并 find/insert 到一个核心数据实体中。我只是无法理解如何深入 albumParentFolders 并查看它们是否存在,如果不存在则将它们添加到实体相册中。

我知道这是一种深入到 albumParentFolders 的递归方法,但由于我的 AlbumObjects 的结构无法找到有效的解决方案。

所以,我要导入的对象数组是这样的

NSArray AlbumObjects
---------------------------------------
NSString * albumFolderName
NSString * albumDetailsTitle
NSString * albumDetailsURL
NSArray  * albumParentFolders (Array of (NSStrings *) of albumFolderNames used for the level in the tree this album lives in. Can be nil for a root folder)

我需要先搜索核心数据,如果找不到,请将 albumFolderName 插入到名为 albums 的核心数据实体中。然后使用自动生成的相册实体 class,为该文件夹插入一个新的详细信息对象。例如[newFolder addDetailsObject:newDetails] 此外,albumFolderName 在核心数据中不是唯一的,因为 albumFolderName 可以多次列出,但在不同的父文件夹中。

Entity: albums
-------------------------------------
Attribute: folderName
-------------------------------------
Relationship: albumDetails <------>> Entity : details (For adding multiple albumDetailsTitle and albumDetailsURL)
Relationship: parent     <<-------
Relationship: subGroups          |
                     ^           |
                     ------------

相册文件夹最终使用 NSOutlineView 和 IB 绑定显示在树视图中。这部分已经可以了。

如果有人可以建议如何迭代 AlbumObjects,特别是深入到 albumParentFolders 以便整个文件夹结构可以存储在实体中,我将非常感激。

SDK需要支持OSX10.7+

从根部开始,循序渐进,创建缺失的分支。

伪代码:

album = root
if (albumParentFolders != nil) {
    parentAlbum = root
    for (folder in albumParentFolders) {
        album = find folder in parentAlbum.subGroups
        if (album not found) {
            album = insert new album
            album.folderName = folder
            album.parent = parentAlbum
        }
        parentAlbum = album
    }
}
add details to album