2016-07-20 4 views
0

필자는 반복 작업을 통해 핵심 데이터 엔티티를 찾고 삽입하는 데 필요한 객체 배열을 가지고 있습니다. albumParentFolders로 다이빙하는 방법에 대해 머리를 맞대고 엔티티 앨범에 추가하지 않을 경우 엔 존재하는지 확인하십시오.계층 적 폴더 스타일 데이터를 가져 오는 방법

필자는 albumParentFolders로 드릴 다운하는 일종의 재귀 적 방법이지만 내 AlbumObject가 어떻게 구성되어 있는지에 따라 작동하는 솔루션을 찾을 수 없다는 것을 알고 있습니다.

그래서, 객체 내 배열을 가져가 내가 처음 검색 핵심 데이터를 필요로하고, 코어 데이터 엔터티에 albumFolderName 삽입 발견되지 않는 경우는 앨범이라는

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) 

같다. 그런 다음 앨범 엔티티에 자동 생성 클래스를 사용하여 해당 폴더에 대한 새 세부 정보 개체를 삽입하십시오. 예 : [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

가'전체 경로를 albumParentFolders' 있습니까? AlbumFolderNames는 고유하지 않으며 찾을 수없는 경우에만 삽입합니다. – Willeke

+0

albumParentFolders는 nil이거나 [0] = @ "General"[1] = @ "July 2016"[2] = @ "Keep"albumFolderName은 @ "Keep"일 수 있습니다. albumFolderName도 nil 일 수 있으므로 폴더가 없으므로 루트 세부 항목이 있음을 나타냅니다. 내가 아는 것은 다음 배열 객체가 [0] = @ "New Import"[1] = @ "July 2016"[2] = @ "Keep"과 비슷한 폴더에있을 수 있다는 것입니다. 그것의 존재를 증명하기 위해 부모의 부모를 찾는 종류가 필요합니다. 나는 이것이 재귀적인 부분이라고 다시 짐작할 수 없다. – GeoffCoope

답변

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 
+0

고맙습니다. 당신의 본보기는 바로 나를 올바른 길로 인도하기 위해 필요한 것입니다 : D 나는 이제 그것을 작동시킵니다. – GeoffCoope

+0

나는 너무 잘 가고 있다고 생각했다. 나는 여전히 문제가 있습니다. 예를 들어 폴더 (ABC/July/Keep)가있는 앨범과 세부 정보를 가져온 다음 폴더 (DEF/July/Keep)가있는 다른 앨범 세트를 가져 오면 새 앨범 세부 정보가 추가됩니다. 7 월 및/ABC 폴더에 보관하십시오. 나는 그 일이 일어나기를 원하지 않습니다, 나는 모든 가져 오기마다 새로운 폴더를 만들고 모든 새로운 앨범을 거기에 넣기를 원합니다. 어떤 아이디어? – GeoffCoope

+1

'parentAlbum의 하위 그룹에서 폴더 찾기 '가 fetchRequest가 아닙니다. 'parentAlbum.subGroups'에서'folder'를 찾습니다. 내 대답을 업데이트했습니다. ABC 및 DEF 하위 그룹의 루트입니까? 아니면 가져올 때마다 새 루트를 만드시겠습니까? – Willeke