我有一个对象数组,我需要迭代并找到/插入到核心数据实体中。我无法理解如何潜入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 +
答案 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