1

'Person'및 'Prepare Content'유형의 Core-Data-Entities가 포함 된 'Entity'모드로 구성된 NSArrayController가 있습니다. 다른 모든 속성은 기본 속성입니다. 나는이의 'arrangedObjects'-속성에보기 기반 NSTableView는의 내용을 결합했다엔티티 모드의 NSArrayController가 콘텐츠 바인딩이 편집 된 NSTableView 이후에 업데이트되지 않습니다.

-(IBAction)addEntity:(id)sender{ 
    Person* new = [NSEntityDescription insertNewObjectForEntityForName:@"Person" 
          inManagedObjectContext:[self managedObjectContext]]; 
    new.text = @"text"; 
    new.date = [NSDate date]; 
} 

: 예상대로 내가 (버튼 클릭을 통해) 새로운 사람 - 엔티티를 만들 때,이 arraycontroller는 arrangedObjects를 업데이트 Person을 표시하려면 arrayController를 호출하십시오. 하나의 열에는 TableCellView의 'objectValue.text'속성에 바인딩 된 편집 가능한 (그러나 달리 기본값) NSTextField가 있습니다.

표에서 'text'속성을 편집하고 tablecell이 여전히 편집 모드에있는 동안 다른 사람을 추가하면 표의 초점이 사라지고 편집이 끝나고 새 사람이 표에 표시됩니다. 모든 것이 잘 보입니다.

그러나 다른 사람을 추가하려면 arrayController가 arrangedObjects 속성을 업데이트하지 않습니다. arrayController의 setContent :가 더 이상 호출되지 않습니다.

이것은 의도 한 동작입니까?

답변

5

직접 답변을 찾았습니다. NSManagedObjectContextObjectsDidChangeNotifications는 테이블을 편집 한 후에 전송되지 않은 것으로 나타났습니다 (이전과 마찬가지로).

link은 올바른 방향으로 나를 가리켰습니다. addEntity 메서드를 다음과 같이 수정하면 모든 것이 예상대로 작동합니다.

-(IBAction)addEintrag:(id)sender { 
Person* new = [NSEntityDescription insertNewObjectForEntityForName:@"Person" 
          inManagedObjectContext:[self managedObjectContext]]; 
new.name = @"test"; 
new.datum = [NSDate date]; 
[self.managedObjectContext processPendingChanges]; 
} 
0

arrayController에서 객체를 자동으로 재 배열하려면 Interface Builder에서 arrayController의 "컨텐츠 자동 재 배열"체크 상자를 선택하거나 프로그래밍 방식으로 setAutomaticallyRearrangesObjects:을 사용하십시오.

+0

시도했지만 문제가 해결되지 않았습니다. 내 지식은 sortdescriptors 또는 filter-predicates가있는 경우에만 영향을 미칩니다. 필자의 경우 arraycontroller의 업데이트는 초기 설정 setAutomaticallyPreparesContent :에 의해 트리거됩니다. 이 테이블을 편집 한 후에도 여전히 활성화되어 있습니다. – deflozorngott