EVReflection icon indicating copy to clipboard operation
EVReflection copied to clipboard

Realm Object broke after ea87088

Open guilhermearaujo opened this issue 6 years ago • 8 comments

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 https://github.com/evermeer/EVReflection/commit/ea870885cd21b484fd4ada0f1b66e1eb126ebfb3 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"

guilhermearaujo avatar Feb 12 '19 13:02 guilhermearaujo

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

volkoivan avatar Mar 26 '19 17:03 volkoivan

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 avatar Mar 28 '19 07:03 evermeer

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

evermeer avatar Apr 01 '19 05:04 evermeer

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

guilhermearaujo avatar Apr 01 '19 13:04 guilhermearaujo

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

evermeer avatar Apr 27 '19 09:04 evermeer

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.

bennettyuan avatar Aug 28 '19 03:08 bennettyuan

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

evermeer avatar Aug 28 '19 05:08 evermeer

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'

tobyworks avatar Oct 03 '19 08:10 tobyworks