2013-03-20 3 views
2

내 문제는 다양한 NSDictionary를 보유하고있는 NSMutableArray를 업데이트하는 데 있습니다. 각 NSDictionary에는 사용자가 테이블보기에서 선택한 레코드에 따라 데이터베이스에서 검색되는 6 개의 키가 있습니다. 배열은 사용자가 사전을 선택하고 내용을 볼 수있는 NSArrayController에 연결됩니다.KVC 준수 NSDictionary의 내용을 담고있는 NSMutableArray에 대한 업데이트

사전의 수가 변경되면 arrayController가 뷰를 업데이트합니다. 문제 없어. 그러나 사전의 수는 테이블보기의 선택 항목간에 동일하며 arrayController는보기를 업데이트하지 않지만 모델은 업데이트됩니다.

arrayController는 IB에서 테이블 뷰에서 선택 사항이 변경 될 때마다 업데이트되는 모델 배열에 바인딩됩니다.

사용 : KVC을 준수하지

[self.selectedJobNotes addObject:[self.jobNotes objectAtIndex:i]]; 

합니다.

그러나 (내가 KVC 준수를 생각하는하는)를 사용하여 :

[[self.selectedJobNotes objectAtIndex:noteCount] setValue:[[self.jobNotes objectAtIndex:i]valueForKey:@“Content"] forKeyPath:@"Content"]; 

중 하나가 작동하지 않습니다.

ArrayController에게 새로운 배열임을 알려줄 수있는 방법이 있습니까/새로 고침 한 콘텐츠가 있으므로 다시로드하십시오.

[self.jobNotesArrayController fetch:self.a2gDataObject.selectedJobNotes]; 

??

답변

1

가장 좋은 방법은 인덱싱 된 접근자를 구현 (및 사용)하는 것입니다. 귀하의 경우에 그들은

- (void)insertObject:(NSDictionary *)dict inSelectedJobNotesAtIndex:(NSUInteger) index { 
    [self.selectedJobNotes addObject:[self.jobNotes objectAtIndex:index]]; 
} 


- (void)insertSelectedJobNotes:(NSArray *)notesArray atIndexes:(NSIndexSet *)indexSet { 
    [self.selectedJobNotes insertObjects:notesArray atIndexes:indexSet]; 
} 

참조 KVC 프로그래밍 가이드처럼 보일 것 : Mutable Indexed AccessorsEnsuring KVC Compliance을.

willChange/didChange ValueForKey:에 업데이트를 래핑 할 수도 있지만 인덱싱 된 접근자를 구현하면 해당 내용을 한 번에 모두 해결할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 나는 그것을 줄 것이다. 한편, 배열을 제거하고 새 배열을 만들었습니다. selectedJobNotes = nil; 어색하고 어쩌면 잘못된 방법 일 수도 있지만 단기간에 효과가있었습니다. 이러한 방법을 구현하려고합니다. 나는 내가 그 의지를 시도했다고 생각한다. 변경/변경. 그러나 그들은 작동하지 않았다. 아마도 올바르게 구현되지 않았습니다. – Steve

+0

이러한 메서드를 구현했지만 원하는 결과를 얻으려면 여전히 배열을 파괴하고 다시 만들어야합니다. 아마 아직도 이전보다 더 잘하고 있습니다. – Steve