NSARRAYCONTROLLER에서 제거 된 객체는 클릭 할 때까지 테이블에 머물러 있습니다

StackOverflow https://stackoverflow.com/questions/1888780

문제

내 응용 프로그램의 AppDelegate의 ManagedObjectContext에 바인딩되는 nsarraycontroller가 있습니다. 다운로드 큐 역할을합니다. 항목은 프로그래밍 방식으로 NSARRAYCONTROLLER에 추가됩니다

나는 이것에 두 개의 필드를 보여주는 테이블이 있으며, 각각은 그 값이 상기 nsarraycontroller에 개별적으로 바인딩 된 열입니다. 새 다운로드가 시작되면 NSARRAYCONTROLLER에서 프로그래밍 방식으로 제거됩니다.

시작하기 전에 큐에서 다운로드를 제거하기 위해 버튼을 추가했습니다. 버튼은 NSARRAYCONTROLLER의 제거에 바인딩됩니다. 조치 테이블에서 선택한 항목을 제거해야합니다.

내 문제는 선택한 항목이 테이블에서 제거되지 않으면 테이블의 다른 항목을 클릭 할 때까지 남아 있습니다. 마우스 버튼을 유지하는 동안 항목이 원인이 된 행을 선택하면 마치 마치 마치 마치 마치 마치 마치 마치 마치 값이 없습니다.

콘솔에서 제거 버튼을 클릭하면 다음이 나타납니다.-[NSCFDictionary _setUnprocessedDeletion__:]: unrecognized selector sent to instance 0x2000f2220

프로그래밍 방식으로 테이블에서 항목을 제거하면[[downloadsArray content] removeObjectAtIndex:0]; [downloadsTable reloadData]; [downloadsTable deselectAll:nil];여전히 보이지 않는 항목을 남겨두고 마우스 버튼이 다운 된 경우에만 선택할 수있는 상태로 유지됩니다.

NSARRAYCONTROLLER의 CANREMOVE에 대한 제거 버튼의 활성화 속성을 제대로 묶었 고 올바르게 작동합니다.

대기열의 항목 수를 보여주는 레이블이 있습니다. 이것은 NSARRAYCONTROLLER, DEREDOBJECTS, @COUNT에 바인딩됩니다. 항목을 추가 할 때는 올바르게 작동하지만 제거 할 때는 제대로 작동합니다.

내가 잘못하고있는 일에 대한 아이디어는 대단히 감사 할 것입니다.

도움이 되었습니까?

해결책

nsmanagedObjectIdresultType와 함께 nsfetchRequest를 사용하려고 할 때도 같은 문제가 있었으며 -[nsmanagedObjectContext deleteObject :]로 결과를 삭제하려고 시도했습니다.

솔루션 : 반환 된 개체를 삭제하려는 경우 nsfetchrequest에 nsmanagedobjectidresulttype를 사용하지 마십시오.

다른 팁

방금 비슷한 문제가있었습니다. _setunprocessedDeletion__ : nsmanagedObject에 대해 정의 된 메소드이며, 분명히 메시지가 엔티티 모드로 설정된 배열 컨트롤러에서 제거 될 때 객체로 전송되는 것으로 밝혀졌습니다. 그것은 내 문제였습니다. 무거운 리모델링이 하루 종일 배열 컨트롤러가 엔티티 모드로 설정되었으며, 그의 컨텐츠는 관리되는 객체 대신 일반 객체 배열에 묶여있었습니다. 이러한 오류 중 하나는 객체를 제거 할 때마다 발생했습니다. 배열 컨트롤러의 ContentArray를보십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top