无法删除关键路径 "count" 的观察者 <NSArrayController>

Cannot remove an observer <NSArrayController> for the key path "count"

我得到:

*** Terminating app due to uncaught exception 'NSRangeException', reason: 'Cannot remove an observer <NSArrayController> for the key path "count" from <MyElement> because it is not registered as an observer.'

我有一个背景 NSOperation,它正在填充 MyElement 的属性。这些 MyElement 对象位于由 NSArrayController 管理的数组中,并绑定到 NSTableView。

这是否与更改后台线程的属性有关?如果是,我该如何禁用它,以便 table 在完成更改之前看不到这些更改(并且可以在主线程)?

我将其设置为按 "size" (NSNumber) 属性 和

排序

崩溃看起来像:

0 CoreFoundation   0x00007fff87ec44f2 __exceptionPreprocess + 178
1 libobjc.A.dylib  0x00007fff85d6cf7e objc_exception_throw + 48
2 CoreFoundation   0x00007fff87f2b4bd +[NSException raise:format:] + 205
3 Foundation       0x00007fff8755d786 -[NSObject(NSKeyValueObserverRegistration) _removeObserver:forProperty:] + 504
4 Foundation       0x00007fff8755d533 -[NSObject(NSKeyValueObserverRegistration) removeObserver:forKeyPath:] + 108
5 Foundation       0x00007fff875ce1a4 -[NSObject(NSKeyValueObserverRegistration) 
...
15  Foundation     0x00007fff87572a69 _NSSetObjectValueAndNotify + 274
16  MyApp          0x0000000100051a10 -[MyPropertiesOperation main] + 496

我似乎无法在后台线程中修改这些对象,而且我看不到暂时挂起观察者的方法,所以我将所有属性添加到后台线程中的字典中,然后在主线程调用:

[element setValuesForKeysWithDictionary:properties];