2014-06-12 3 views
0

검색 알고리즘을 위해 맥주 배열의 모든 이름에 액세스하려고합니다. 배열을 사전으로 설정했지만 사전과 매우 유사하게 동작하지 않습니다. 다음은 데이터의 모습입니다. enter image description here전체 배열에 액세스하는 배열 객체 사전

어떻게하면 배열에 액세스했는지 확인할 수 있습니다. 여기 내 uitableview를 채우는 방법이 있습니다. 기본적으로 arrray의 개별 개체에 액세스하는 방법을 알고 있지만 전체 배열에 액세스 할 수 없습니다. :

cell.detailTextLabel.text=[self.beers[indexPath.row] name] 

그런데 다시 완전히 벗어날 수 있습니다. 나는 아직도 나의 객관적인 C와 Ios를 배우고있다. 나의 미경험이 나의 지위에서 처음부터 끝까지 보여 주면 미안하다. 모든 도움말이 도움이됩니다. 고마워요!

+0

'맥주'가 '이름'이라는 'NSString'속성을 가진 맞춤 클래스라고 가정하는 것이 맞습니까? – user3386109

+0

@ user3386109 네 맞습니다. – Blake

답변

1

난 당신이 각 Beer 개체 만이 아니라 이름을 포함하는 새 배열을 원하는 있으리라 믿고있어 루프와 배열을 반복하여 배열의 이름을 모두 액세스 할 수 있습니다 객체 그 자체. 이 범주에서와 같이 배열 "매핑"기능을 사용할 수 있습니다. 그게 당신이 달성하고자하는 것입니다 만, 다음 줄은 모든 맥주 이름을 포함하는 배열을 생성 할 경우

typedef id(^MapBlock)(id input); 

@implementation NSArray (Additions) 
- (NSArray *)arrayByMappingWithBlock:(MapBlock)block { 
    NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:self.count]; 
    for (id obj in self) { 
     [array addObject:block(obj)]; 
    } 
    return array; 
} 
@end 

그런 다음 ...과 같이

NSArray *beerNames = [self.beers arrayByMappingWithBlock:^id(Beer *beer) { 
    return beer.name; 
}]; 
0

당신은

for (Beer *beer in self.beers) 
    NSLog(@"%@", beer.name); 
1

정말 확실하지 않음을 사용할 것 :

[self.beers valueForKeyPath:@"name"]; 
+0

비록 컴파일 시간을 체크하지 않고 제공합니다 ... – CrimsonChris

+0

여러분이 저에게 제 코드를 사용하고있는 지점에 도달하고 있습니다 만, 이것을 사용하여 구현할 때이 런타임 오류가 발생했습니다 : valueForUndefinedKey : this : 클래스는 키 이름을 코딩하는 키 값이 아닙니다. – Blake

+0

"name"은 Beer 클래스의 속성이 아니거나 Beer 클래스의 인스턴스가 아닌 다른 객체가 Beers 배열에 있습니다. –