Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Realm Object broke after ea87088 #300

Open
guilhermearaujo opened this issue Feb 12, 2019 · 8 comments
Open

Realm Object broke after ea87088 #300

guilhermearaujo opened this issue Feb 12, 2019 · 8 comments

Comments

@guilhermearaujo
Copy link

guilhermearaujo commented Feb 12, 2019

I am using EVReflection 5.7.0 and it works fine. After upgrading to 5.8.0 (or 5.90), my Realm Object models no longer work.

Nothing wrong happens during the deserialisation, but when I try to access one of their properties, I get a SIGABRT.

I tested each commit and found changes on ea87088 to be causing this.
This is my model declaration:

class Category: Object, EVReflectable {
  @objc dynamic var id: Int = 0
  @objc dynamic var name: String = ""
  @objc dynamic var hexColor: String = ""
  @objc dynamic var imageUrl: String = ""
}

And this is some lldb data from the deserialised object:

(lldb) po category
RealmSwiftObject {
}

(lldb) po category.toJsonString()
"{}"

(lldb) po category.name
error: Execution was interrupted, reason: breakpoint 1.1.
The process has been returned to the state before expression evaluation.

Using 5.7.0, however:

(lldb) po category
Category {
	id = 6;
	name = Some name;
	hexColor = #dd6254;
	imageUrl = https://some.url/image.jpg;
}

(lldb) po category.toJsonString()
"{\"color\":\"#dd6254\",\"id\":6,\"imageUrl\":\"https:\\/\\/some.url\\/image.jpg\",\"name\":\"Some name\"}"

(lldb) po category.name
"Some name"
@volkoivan
Copy link

Can confirm, I have the same problem. Took me a day to figure out what happened with the project.
And now I'm stuck with broken project, because new Xcode doesn't compile the 5.8.0 version

@evermeer
Copy link
Owner

evermeer commented Mar 28, 2019

When using Xcode 10.2 you should use EVReflection version 5.10.1 or later. If cocoapods installs an earlier version, then you should upgrade cocoapods to version 1.7.0.

@evermeer
Copy link
Owner

evermeer commented Apr 1, 2019

@megavirus74 and @guilhermearaujo could you confirm that you are using EVReflection version 5.10 or later and still have this problem?

@guilhermearaujo
Copy link
Author

@evermeer a while ago I decided not to use Realm anymore and switched to the regular EVReflection.

@evermeer
Copy link
Owner

If someone still has this issue, then just reopen this.

@bennettyuan
Copy link

I also encountered the same issue. Finally, I find source cause of this issue.
The source is swiftClassTypeFromString(_:).
It cannot be convert some Realm class, like List<FooRealmObject>.

I modified setPropertiesfromDictionary(_:anyObject:conversionOptions:forKeyPath:) back to:

if let c = original as? EVCustomReflectable {
    if let v = c.constructWith(value: value) {
        value = v
    }
}

Then solved this issue of Realm crash. (But, this is a temporary solution)

I think we need rethink how to "construct" better.

@evermeer
Copy link
Owner

@bennettyuan18 I will have a look at this later. Reopening this issue so that I won't forget.

@evermeer evermeer reopened this Aug 28, 2019
@tobyworks
Copy link

tobyworks commented Oct 3, 2019

For anyone with the same issue for now you can use my fork in your podfile:

  pod 'EVReflection/Realm', :git => 'https://github.com/tobybonhof/EVReflection'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants