Свойство первичного ключа name не существует в объекте RealmSwiftPermissionRole

Я использую RealmSwift в качестве базы данных в моем быстром проекте. Сегодня, после открытия моего проекта в Xcode-beta версии 11, мое приложение вылетает с этой ошибкой:

Завершение работы приложения из-за необработанного исключения "RLMException", причина: "Свойство первичного ключа" name "не существует для объекта" RealmSwiftPermissionRole "

Мое приложение работает должным образом на предыдущей версии Xcode (10.2.1). RealmSwiftPermissionRole класс от Realm и у меня нет доступа к нему. Возможно, в своих обновлениях функций они исправили эту ошибку, но сейчас я много искал, но не нашел решения. (Я очищаю проект, удаляю приложение из симулятора и снова запускаю проект, но ничего не изменилось.) Есть предложения?

Ответ 1

Существует проблема с iOS 13 и Xcode 11, которая может вызвать эту проблему. Все свойства String классов Realm со значением по умолчанию String как-то игнорируются. Вы можете исправить это, обновившись до последней версии (в настоящее время 3.19.1), а затем в Xcode: Product → Clean Build Folder.

Если вы используете cocoa-стручки:

Откройте ваш проект Podfile и замените строку RealmSwift на:

pod 'RealmSwift', '~> 3.19.1'

Затем откройте терминал в папке проекта и:

pod repo update
pod install

Надеюсь, это поможет.

Ответ 2

Разработчики Realm начали работать над совместимостью с Xcode 11. С этой страницы...

Использование Realm с бета-версиями Xcode требует сборки из исходного кода и обычно требует использования веток разработки, а не выпусков.

Carthage

github "realm/realm-cocoa" "tg/xcode-11-b1"

DEVELOPER_DIR=/Applications/Xcode-beta.app/Contents/Developer carthage bootstrap -no-use-binaries

CocoaPods

pod 'Realm', git: 'https://github.com/realm/realm-cocoa.git', branch: 'tg/xcode-11-b1', submodules: true

pod 'RealmSwift', git: 'https://github.com/realm/realm-cocoa.git', branch: 'tg/xcode-11-b1', submodules: true

Требуется явное включение модуля Realm в качестве зависимости, так как в противном случае он попытается использовать последний выпуск части obj-c.

Обратите внимание, что последнее предложение. Вы должны включить модуль Realm в качестве зависимости, иначе он будет использовать не бета-версию и не будет работать.

Ответ 3

Попробуйте удалить и переустановить приложение тоже.