日記アプリ「Nikky」を久しぶりにアップデートしようとしたら
Xcode11でRealm関連のエラーが出てビルドできなかったので対処法をメモ。
Xcode11でRealmの「Terminating app due to uncaught exception 'RLMException」エラー
先日、iOSの最新版「iOS13」が公開されたこともあり、XcodeもXcode11になりました。
Xcodeを11にアップデート後、iOSプロジェクトをビルドしたら以下のエラーが出てビルドできませんでした。
2019-09-21 13:53:32.359632+0900 Nikky[1409:430233] *** Terminating app due to uncaught exception 'RLMException', reason: 'Primary key property 'date' does not exist on object 'DiaryData''
最後にプロジェクトをビルドしたのは1年くらい前だったのですが、その際はビルドエラーは出てなかったはずなので、
Xcode11にアップデートしたことによるエラーかと思われます。
エラー内容としては、RealmでPrimary keyがないというエラーのようですが、該当するクラスにはちゃんとプライマリーキーを設定していました。
import Foundation import RealmSwift class DiaryData: Object { @objc dynamic var date: String = "" @objc dynamic var text: String = "" @objc dynamic var attdata:Data? = nil @objc dynamic var thumnail:Data? = nil // プライマリキー override static func primaryKey() -> String? { return "date" } }
プライマリーキーは設定しているのになぜかエラーが出る謎の状態なので、ネットで調べてみることに。
Xcode11でRealmの「Terminating app due to uncaught exception 'RLMException」エラーが出る場合の対処法
上記が参考になりました。
僕以外の人も、Xcode11にアップデートしてから同様のエラーが出ている人が多いようです。
対処法としては、RealmとRealmSwiftをXcode11対応版にアップデートすればOKなようです。
なので、cocoapodsの記述を下記に変更してインストールし直しました。
pod 'Realm', git: 'https://github.com/realm/realm-cocoa.git', branch: 'master', submodules: true pod 'RealmSwift', git: 'https://github.com/realm/realm-cocoa.git', branch: 'master', submodules: true
そして再度ビルドし直したら「Terminating app due to uncaught exception 'RLMException」が消えてビルドが成功するようになりました。
いつもそうですが、メジャーアップデートするといつもと違ったエラーが出るからヒヤヒヤしますね...
(新しい内容だから参考になる情報も少なかったりするので...)
今回はとりあえず直ってよかったです...