Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Primary key property 'name' does not exist on object 'RealmSwiftPermissionRole'

Tags:

xcode

realm

I'm using RealmSwift as a database in my swift project. Today, after opening my project in Xcode-beta version 11, my app crash with this error:

Terminating app due to uncaught exception 'RLMException', reason: 'Primary key property 'name' does not exist on object 'RealmSwiftPermissionRole''

My app works properly on the previous version of Xcode(10.2.1). RealmSwiftPermissionRole is a class from the Realm and I don't have access to it. Maybe in their feature updates, they fix this bug but for now, I search a lot but didn't find any solution. (I clean the project, delete the app from the simulator, and run the project again but nothing changed.) Any suggestion?

like image 948
Hamed Ghadirian Avatar asked Jun 05 '19 09:06

Hamed Ghadirian


3 Answers

There's an issue with iOS 13 and Xcode 11 which may cause this problem. All String properties of Realm classes with a default String value set are disregarded somehow. You can fix this by updating to the latest version (currently 3.20.0) and then on Xcode: Product -> Clean Build Folder.

If you're using cocoa-pods:

Open your project's Podfile, and replace RealmSwift line with:

pod 'RealmSwift', '~> 4.4.1'

Then, open terminal on the project's folder and:

pod repo update
pod install

Hope that helps.

like image 138
Gal Shahar Avatar answered Nov 10 '22 09:11

Gal Shahar


Developers of Realm have started working on Xcode 11 compatibility. From that page...

Using Realm with Xcode betas requires building from source, and typically will require using dev branches rather than releases.

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

Explicitly including the Realm pod as a dependency is required as otherwise it'll try to use the latest release of the obj-c part.

Note that last sentence. You must include the Realm pod as a dependency or it'll use the non-beta version and it won't work.

like image 44
Sammy Spets Avatar answered Nov 10 '22 08:11

Sammy Spets


I had run into the same issue with RealmSwift 4.3.1, the problem was I forgot to mark the property as @objc

@objc dynamic var id = ""
like image 10
Iosif Avatar answered Nov 10 '22 09:11

Iosif