2010-04-19 5 views
0

XML 파일에서 많은 데이터를로드하는 배열이 있습니다. 저는 이것을 tableview에 표시하고 저자를 말하면 모든 책을 표시합니다.NSMutable 배열의 데이터 그룹화

내 NSMutableArray에는 제목, 저자 등 모든 각 도서에 대한 항목이 있습니다. 따라서 저자 목록에는 책이있는만큼 저자 이름이 표시됩니다. 배열 데이터를 그룹화하여 테이블에 각 작성자를 한 번만 표시 할 수 있지만 저자에게는 자신의 책 배열이 포함됩니다. 간단하지만 배열에 대한 그룹 방법을 찾을 수 없습니다.

답변

1

books 배열을 반복하여 작성자를위한 새로운 배열을 만들 수 있습니다. 각 책에 대해 작성자가 containsObject를 사용하여 이미 authors 배열에 있는지 확인하십시오. 그러나 사용자가 저자를 선택할 때 책 배열에서 저자의 책 만 표시하는 것에 대해서도 걱정해야합니다.

키가 저자 이름이고 각 키의 객체가 해당 작성자의 책인 NSMutableDictionary 대신 NSMutableDictionary에로드하는 것이 좋습니다.

다음으로 작성자 tableview는 allKeys가 반환 한 배열을 사용하여 사전의 키를 사용합니다.이 배열은 필요에 따라 정렬하거나 keysSortedByValueUsingSelector를 사용하여 정렬 할 수 있으며 책 tableview는 선택한 키의 북 배열을 사용합니다.

데이터가 너무 커서 메모리에 한 번에로드 할 수없는 경우 SQLite와 같은 다른 옵션을 사용해야합니다.

+0

예, 특정 필드에서 배열을 그룹화하는 것이 쉬운 기능이라고 생각합니다. 주 루프를 반복하는 for 루프를 사용하고 각 그룹에 대해 하위 배열을 채 웁니다. 그러나이 배열을 주 배열에 추가하면 하위 배열이 개체로 추가되므로 다음 번에 변경합니다 메인 배열의 모든 참조에 대해 그것을 변경합니다. 하위 배열을 주 배열로 복사하는 방법이 있습니까? 감사합니다 – padatronic

+0

"main"어레이 란 "모든 저자의 책"을 의미하고 "sub"배열은 "특정 저자의 책"을 의미합니까? 하위 배열을 기본 배열에 다시 추가해야하는 이유 또는 "다음 번에 변경"을 의미하는 것인지 확실하지 않습니다. 하위 배열을 만드는 코드를 게시하여 주 배열에 다시 추가하면 (코드를 질문이 아닌 주석으로 추가하는 것) 도움이 될 수 있습니다. NSMutableDictionary를 사용하는 것이 더 간단하고 직접적인 해결책이라고 생각합니다. 이렇게하면 저자가 자동으로 책을 그룹화합니다. – DyingCactus

+0

나는 객체의 배열을 생성하고 이것을 돌려 보내서 각 객체 getter와 setters를 사용하여 필요한 것을 얻을 수 있도록했습니다. – padatronic