2016-09-15 3 views
9

У меня есть приложение iOS с библиотекой RestKit и CoreData. Поскольку Xcode8, я вижу больше журналов, чем раньше, и один из них не имеет для меня никакого смысла.NSManageObjectContext - класс не соответствует ключевому значению для кода @count

error: An observer of NSManagedObjectContextDidSaveNotification illegally threw an exception. Objects saved = { 
inserted = "{(\n)}"; 
managedObjectContext = "<_PFWeakReference: 0x600000621560>"; 
updated = "{(\n ...)}"; 
} 
and exception = [<_PFWeakReference 0x600000621560> valueForUndefinedKey:]: this class is not key value coding-compliant for the key @count. with userInfo = { 
NSTargetObjectUserInfoKey = "<_PFWeakReference: 0x600000621560>"; 
NSUnknownUserInfoKey = "@count"; 

До сих пор, что я могу понять, что слабая ссылка на managedObjectContext (выше ошибки) использует неправильный ключ, но я не могу понял, как его отладить.

Все объекты NSManagedObjects, связанные с этой проблемой, по-видимому, являются коллекциями. В основном NSSet из отношений OneToMany или ManyToMany.

Тогда я нашел это Apple documentation:

Все операторы сбора, за исключением @count, требуют ключа путь справа от оператора коллекции.

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

Я восстановил все мои модели NSManagedObject и дважды проверил все обратные отношения между ними, но это не помогло мне избавиться от него.

Это приложение работает нормально, но я не смог найти решение для удаления этого предупреждения.

+2

Я думаю, что вы не делаете ключ, но это RKManagedObjectStore.m строка 55. – JulianM

+0

Вы когда-нибудь находили способ избавиться от этого предупреждения? –

ответ

1

Я считаю, что это было исправлено в PR 2449, который был объединен в development branch. Этот PR содержит this commit, что швы для решения проблемы.

Я не уверен, что PR был объединен с веткой master, поэтому не уверен, что он доступен через стручки. Но вы можете в своем podfile указать конкретную фиксацию, а не версию. Так что, если вы укажете это:

pod 'RestKit', :git => 'https://github.com/RestKit/RestKit.git', :commit => '9cbba9eb1b490c3c5e2873c8fba8e9c0fec1bf07' 

here как предложил он должен работать!

Но возможно, что фиксация несовместима с Swift 3, я не уверен в этом. Но, возможно, вы не используете Swift 3 ...