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

时间:2016-07-20 10:39:12

标签: objective-c arrays loops core-data hierarchical-data

我有一个对象数组,我需要迭代并找到/插入到核心数据实体中。我无法理解如何潜入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的核心数据实体。然后使用自动生成的类作为相册实体,为该文件夹插入新的详细信息对象。例如[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需要支持OSX 10.7 +

1 个答案:

答案 0 :(得分:2)

从根开始,按照树并创建缺少的分支。

伪代码:

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