2014-12-11 1 views
-1

죄송합니다.이 문제는 내가 다루는 것이 매우 사소한 것입니다. 나는 누군가가 나를 도울 수 있기를 바랍니다. 귀하의 도움은 정말로 감사하겠습니다. 웹 API를 사용하여 NSURLConnectDelegate를 통해 JSON 데이터를 가져오고 있습니다. 다음과 같은 것을 얻을 수 있습니다 :내 논리를 올바르게 구현하여 내 UITableView를 채우는 방법

(
{ 
id = 340 
name = Vicent }, 
{ 
id = 339 
name = Johny }, 
{ 
id = 338 
name = Eric } 
) 

그리고 전역 변수로 NSMutableArray에 저장합니다. 자, 나는 "ids"의 NSSet을 가지고있다. 예를 들면 다음과 같습니다 numberOfRowsInSection에서

{ 
340, 339 
} 

, 나는 세트의 수를 반환합니다. 나는 webAPI에서 저장된 데이터와 배열에서 NSSet만을 ID를로드하려고, 그래서cellForRowIndexPath에서 같은 것을 할 :

for (NSNumber *num in [set allObjects]) { 
      NSString *newString = [[savedArray objectAtIndex:indexPath.row] 
      NSString *new = [num stringValue]; 
      if ([new isEqual:newString]) { 
      }} 

어떻게 그냥 내가 원하는 ID를 채울 수 있습니까?

+2

왜 당신이 당신의 저장하지 않습니다 키가 ID이고 값이 이름 인 'Dictionary'의 ID? 모든 관련 정보를 함께 유지하는 방법 – Ares

답변

2

JSON을 사용하면 테이블보기의 데이터 소스로 사용할 합리적인 데이터 구조 인 사전 배열이있는 것처럼 보입니다.

배열에있는 항목 만 포함하도록 필터를 필터링하는 것처럼 들립니다. 그게 맞습니까?

그렇다면 ID가 집합에 포함 된 배열 요소의 하위 집합을 포함하는 새로운 배열을 만드는 코드를 작성할 수 있습니다. 적어도 6 가지 방법이 있습니다. NSArray 메서드 indexesOfObjectsPassingTest을 사용하면 상당히 간단합니다. 이 메서드는 각 배열 요소를 검사하여 id 객체가 설정에 있는지 확인하는 코드 블록을 전달합니다. 그러면 배열에 ID가 설정된 항목의 색인이있는 NSIndexSet이 설정됩니다. 그런 다음 NSArray 메서드 인 objectsAtIndexes를 사용하여 집합에도 포함 된 객체의 배열을 가져올 수 있습니다. 이런 식으로 뭔가가 (사전의 배열이 savedArray라고하고 세트 allObjects라고 가정하면 :.

//get the indexes of items in the array savedArray who's id appears in the set allObjects 
NSIndexSet *indexes = [savedArray indexesOfObjectsPassingTest: 
    ^(NSDictionary *obj, 
    NSUInteger idx, 
    BOOL *stop) 
    { 
    return [allObjects member: obj[@"id"]] != nil; 
    } 
]; 

//Now build an (immutable) array of just the objects who's ID are in the set 
NSArray *subArray = [savedArray objectsAtIndexes: indexes]; 

위에서 만든 배열의 부분 배열은 불변이 변경 가능한 배열을해야 할 경우 변경 가능한 복사본을 만들 필요가있을 것이다, 이는 한 줄 변화

면책 조항 :.. 난 아직도 블록 구문을 조금 투쟁, 그래서 위 정확히 정확하지 않을 수도 있지만, 그것은 당신에게 일반적인 아이디어를 제공

+0

권. NSFW보다는 오히려 사이트 이름이 특히 재미 있습니다. 하단에는 같은 콘텐츠 (http://goshdarnblocksyntax.com)에 대해보다 깔끔하고 재미 있지만 덜 친숙한 링크가 포함되어 있습니다. 참으로 양털 떼. –

관련 문제