【发布时间】:2018-05-26 01:56:13
【问题描述】:
您如何将NSObject 向上转换为RLMObject?
假设您有一个 NSObject 类型的模型对象,并说您想将其动态向上转换为 RLMObject,您会怎么做?
值得一提的是RLMObject的属性不能在运行时填充,否则我可能会通过<objc/runtime.h>来完成。 (我的意思是......从技术上讲,他们可以......这太过分了)
我想做的事:
这背后的主要目的是创建一个缓存框架,该框架将在可互换的缓存依赖项(如 Realm、SQLite、Core Data 等)之间动态选择。例如,我想象有一个预处理器标志,希望能够从使用 Realm 切换到 SQLite ,而不必更改我的模型子类。
这将要求我的所有模型都是 NSObject 的子类,因为 RLMObject 在 SQLite 环境中没有意义。
我一直在思考这个问题,这是我的方法:
1) 在运行时循环遍历NSObject 的属性并创建它们的键/值对象
2) 在运行时创建RLMObject 的子类,并从传递的NSObject 模型中复制属性列表
3) 利用 Realm 的 initWithValue: 填充属性
你有什么看法?
【问题讨论】:
标签: ios objective-c realm