2012-07-25 6 views
0

내 MainController에는 NSArrayController에 바인드하는 persons 배열이 있습니다. 그 사람의 이름은 표 name 열에 표시됩니다. NSArrayController에 단추를 바인딩하여 메서드를 추가하면 새 사람을 추가하는 단추를 추가 할 수 있지만 메서드에 새 사람을 추가하면 테이블에 새 사람이 표시되지 않고 그 이유를 알 수 없습니다. 코코아 : nsarraycontroller 객체 오류 추가

enter image description here

내 코드

새로운 사람을 추가하는

Person *p =[[Person alloc]init]; 
[self.persons addObject:p]; 

UPDATE : 나는하여 답을 알고 http://chanson.livejournal.com/85659.html 있는 NSMutableArray addObject은 KVC하지, 그래서

[[self mutableArrayValueForKey:@"persons"] addObject:person]; 
를 사용할 필요가 있기 때문에
+0

은 사람이 배열, 배열 컨트롤러 또는 둘 모두의 이름입니까? 당신이 올린 글에서 나온 것 같아. – rdelmar

답변

1

[self.persons addObject : p] 행의 self.person이 배열을 참조하는 경우 당신은 줄을 추가 할 필요가있다. self.persons = persons; 그 후에 테이블을 갱신해야합니다. 나는 이것이 왜 필요한지 절대 확신하지 못했습니다. 아마도 KVO와 관련이 있습니다.

반면에 self.persons가 어레이 컨트롤러를 참조하면 배열 컨트롤러에 객체를 추가하는 것이 정렬 된 객체에 추가되므로 작성한대로 작동해야합니다. 배열 된 객체는 테이블 열 에 묶여있다. 그런 식으로 배열을 업데이트하면 배열 컨트롤러에 바인딩되기 때문에 배열을 업데이트합니다.