코어 데이터를 사용하는 응용 프로그램에서 작업하고 있습니다. 내 모델은 기본적으로 "설명"이라고 불리는 객체의 목록입니다. 각 설명에는 "등록 정보"목록이 있습니다. 이것은 매우 단순한 일대 다 관계입니다. 두 열이 포함 된 NSTableView가 있습니다. 내 속성 목록 내 테이블보기를 채우기 위해 바인딩을 사용하고NSArrayController는 NSTableView에서 일대 다 관계로 바인딩합니다.
:
- (IBAction)addProperty:(id)sender {
NSLog(@"Add a new property");
PCSDescriptionProperty *property = [PCSDescriptionProperty insertInManagedObjectContext: self.storage.managedObjectContext];
property.name = @"New property";
property.info = @"New property info";
[self.descriptionObject addPropertiesObject: property];
}
이 문제는 다음과 같습니다
self.controller = [[NSArrayController alloc] initWithContent: self.descriptionObject.properties];
NSTableColumn *propertyColumn = [self.propertiesTableView tableColumnWithIdentifier: @"property_column"];
[propertyColumn bind: NSValueBinding toObject: self.controller withKeyPath: @"arrangedObjects.name" options: nil];
NSTableColumn *infoColumn = [self.propertiesTableView tableColumnWithIdentifier: @"info_column"];
[infoColumn bind: NSValueBinding toObject: self.controller withKeyPath: @"arrangedObjects.info" options: nil];
내 "addProperty"메소드 호출하는 버튼이 있습니다 addPropertiesObject:
을 호출해도 KVO 알림이 나타나지 않고 내 tableview가 새로 고쳐지지 않습니다. addChangValueForKey/didChangeValueForKey를 호출하기 전에 addPropertiesObject를 사용하여 성공하지 못했습니다.
왜 그런가? 감사합니다.
속성을 설명에 추가하는 대신 property.description = self.descriptionObject를 설정해보십시오. 이온 개체입니다. 또한 두 관계를 올바르게 올바르게 설정했는지 확인하십시오. 그리고 ArrayController 엔티티를 @ "Property"로, managedObjectContext를 managedObjectContext로, contentSet을 description.properties로 설정합니다. 그것은 당신이 IB에서하는 방법입니다. –
실제로 변경 내용을 저장할 수 있기 때문에 관계가 작동합니다. NSArrayController의 내용은 "다시 가져온"것이 아닙니다. –
여전히 To-Many 관계의 descriptionObject.properties에 contextSet을 바인딩해야합니다. initWithContent를 사용하지 마십시오. –