【发布时间】:2015-02-09 18:05:30
【问题描述】:
我正在开发一个需要从 JSON 文件同步的应用。这些文件是调用端点服务后创建的 plist。
因此,每个文件都以 ClassName 命名,并包含该类型的所有对象。所以我要做的是打开每个文件并保存/更新/删除我的领域数据库中的所有对象。
我目前丑陋的解决方案是迭代领域模式并使用开关来匹配实体类名:
let realm = RLMRealm.defaultRealm()
var schema = realm.schema.objectSchema as [RLMObjectSchema]
for clazz in schema {
switch(clazz.className){
case Class1.className():
var sortedArray = Class1.allObjects().sortedResultsUsingProperty("updatedAt", ascending: false)
if(sortedArray.count>0){
date = sortedArray.firstObject().valueForKey("updatedAt") as Int
}
break
case Class2.className():
var sortedArray = Class2.allObjects().sortedResultsUsingProperty("updatedAt", ascending: false)
if(sortedArray.count>0){
date = sortedArray.firstObject().valueForKey("updatedAt") as Int
}
break
}
}
此代码用于获取实体类型的最后更新日期以用于同步目的,但我需要它用于其他东西,所以这适用于一些类,但我有 40 个类...
所以我想知道,是否有办法只使用类名来请求 Realm DB?来自 RLMRealm 的东西(例如:RLMRealm.defaultRealm().allObjectsWithClassName("Class1"))或创建带有 className 的 RLMObject 以访问请求函数。
【问题讨论】: