我在我的swift项目中使用RealmSwift作为数据库。今天,在Xcode-beta版本11中打开我的项目后,我的应用因以下错误而崩溃:
由于未捕获的异常'RLMException'而终止应用程序,原因:对象'RealmSwiftPermissionRole'中不存在'主键属性'name'
我的应用程序在Xcode(10.2.1)的早期版本上可以正常运行。 RealmSwiftPermissionRole 是 Realm 中的一类,我无权访问。也许在他们的功能更新中,他们修复了此错误,但就目前而言,我进行了很多搜索,但未找到任何解决方案。 (我清理了该项目,从模拟器中删除了该应用,然后再次运行了该项目,但未做任何更改。) 有什么建议吗?
答案 0 :(得分:55)
iOS 13和Xcode 11存在问题,可能会导致此问题。设置了默认String
值的Realm类的所有String属性都被忽略了。
您可以通过更新到最新版本(当前为3.20.0),然后在Xcode上解决此问题:产品->清洁生成文件夹。
如果您使用的是可可豆荚:
打开项目的Podfile,并将RealmSwift行替换为:
pod 'RealmSwift', '~> 3.20.0'
然后,打开项目文件夹中的终端,然后:
pod repo update
pod install
希望有帮助。
答案 1 :(得分:6)
Realm的开发人员已开始研究Xcode 11 compatibility。从该页面...
将Realm与Xcode Betas结合使用需要从源代码进行构建,并且通常需要使用dev分支而不是发行版。
迦太基
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 pod作为依赖项,否则它将尝试使用obj-c部分的最新版本。
请注意最后一句话。您必须将Realm pod包含为依赖项,否则它将使用非beta版本,它将无法正常工作。
答案 2 :(得分:6)
我在RealmSwift 4.3.1中遇到了相同的问题,问题是我忘记了将该属性标记为 @objc
@objc dynamic var id = ""
答案 3 :(得分:0)
也尝试删除并重新安装您的应用程序。