2012-05-20 6 views
1

안녕하세요, 나는 200 개 정도의 객체를 보유하는 배열이 있습니다. 이러한 각 객체는 혼합 유형 (int, 문자열 및 bool)의 6 개 필드가있는 또 다른 배열입니다.요소 값을 변경하십시오. nsmutablearray

이 질문에 ...

내가 즉 특정 요소가 개체를 찾기 위해 배열을 검색 할 수는 = TRUE 요소 "A"가 모든 개체를 말한다.

개체 중 하나에서 하나의 요소를 어떻게 업데이트합니까? 그 개체 (부모 배열에서 내가 왜 첫 번째 질문을 물었는지)를 찾아서 제거한 다음 업데이트 된 필드가있는 새 개체를 추가해야합니까? 조금 과장된 것 같지만 이걸 내가해야 할 일 이니? 어쨌든 그 단일 요소를 업데이트 할 수 있습니까?

답변

1

예, 검색 할 수 있습니다. 그렇다면 값을 변경하려면 반드시해야합니다. indexOfObjectPassingTest를 사용하여 객체를 찾을 수 있습니다. 당신의 게시 된 예를 들어, 당신은 (당신의 객체가 필드 중 하나가 "A"인 각 사전 있다고 가정)과 같이 사용합니다 :

NSUInteger indx =[myArray indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) { 
     return [[obj valueForKey:@"A"] isEqualToNumber:[NSNumber numberWithBool:TRUE]]; 
    }]; 

INDX는에 그 테스트를 통과 개체의 인덱스가됩니다 귀하의 배열.

+1

질문의 나머지 절반 : 배열의 요소 자체가 변경 가능하면 변경할 수 있습니다. 예를 들어 요소가 변경 가능한 사전이라면'[[myArray objectAtIndex : idx] setObject : newObject forKey : someKey]'를 호출 할 수 있습니다. 요소가 불변 인 경우에는 [myArray replaceObjectAtIndex : idx withObject : newObject]'로 대체 할 수 있습니다. –

+0

답장을 보내 주셔서 감사합니다. 마지막으로, 어떻게하면 더 이상 부울을 찾고 싶지 않지만, "A"라는 문자열이 "test"라고 말하는 객체를 찾는 것입니다. – user1096447

+1

사용 : return [[obj valueForKey : @ "A"] isEqualToString : @ "test"]; – rdelmar

관련 문제