2016-11-28 8 views
0

Я получаю:Невозможно удалить наблюдатель <NSArrayController> для ключевого пути «считать»

*** Нагрузочного приложение из-за неперехваченное исключение «NSRangeException», причина: «Не удается удалить наблюдатель < NSArrayController> для ключевого пути «count» от < MyElement>, потому что он не зарегистрирован как наблюдатель. '

У меня есть фон NSOperation, который заполняет свойства MyElement. Эти объекты MyElement находятся в массиве, управляемом NSArrayController и привязаны к NSTableView.

Это может быть связано с изменением свойств в фоновом потоке, и если да, то как я могу отключить это, чтобы таблица не увидела эти изменения до тех пор, пока они не будут завершены (и могут быть обновлены в основном потоке)?

Я его установить сортировку по «размеру» свойство (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 

ответ

0

кажется, что я не могу изменить эти объекты в фоновом потоке , и я не вижу возможности временно приостановить наблюдение, поэтому вместо этого я добавляю все свойства в словарь по фоновому потоку, а затем по вызову основного потока:

[element setValuesForKeysWithDictionary:properties];