Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 请求类名为Realm的rlmobject_Ios_Swift_Realm - Fatal编程技术网

Ios 请求类名为Realm的rlmobject

Ios 请求类名为Realm的rlmobject,ios,swift,realm,Ios,Swift,Realm,我正在开发一个需要从JSON文件同步的应用程序。这些文件是在调用端点服务后创建的 因此,每个文件都用类名命名,并包含此类型的所有对象。所以我要做的是打开每个文件并保存/更新/删除我的领域数据库中的所有对象 目前我的丑陋解决方案是迭代领域模式并使用开关匹配实体类名: let realm = RLMRealm.defaultRealm() var schema = realm.schema.objectSchema as [RLMObjectSchema] for clazz in schema {

我正在开发一个需要从JSON文件同步的应用程序。这些文件是在调用端点服务后创建的

因此,每个文件都用类名命名,并包含此类型的所有对象。所以我要做的是打开每个文件并保存/更新/删除我的领域数据库中的所有对象

目前我的丑陋解决方案是迭代领域模式并使用开关匹配实体类名:

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个类


所以我想知道,是否有一种方法可以只使用类名请求领域数据库?从RLMRealm(例如:
RLMRealm.defaultRealm().allObjectsWithClassName(“Class1”)
)或创建具有类名称的RLMObject以访问请求函数的内容。

RLMRealm
上有一个私有的、不受支持的方法(在
RLMRealm\u Dynamic.h
中声明),您可以使用它--
-(RLMResults*)allObjects:(NSString*)className;
。但是,我必须警告您,此方法是私有的,当前不受支持。

您可以使用Realm类中未记录的函数dynamicObjects

例如:

let realm = try? Realm()
let dogs = realm.objects(Dog.self)
变成:

 let realm = try? Realm()
 let dogs = realm.dynamicObjects("Dog")
他们在源代码中提出了警告:

此方法仅在特殊情况下有用,例如, 当构建与领域集成的组件时。如果 在域上构建应用程序时,建议使用类型化方法
对象(类型:)

返回域中给定类名的所有对象

  • 参数typeName:要返回的对象的类名
  • 返回:给定类名的所有对象作为动态对象 :nodoc:

我也花了很长时间才弄明白。我不确定他们为什么选择不在文档中公开此方法。

谢谢你的回答,但我无法从swift代码访问它。此外,如果不支持,我将继续使用它。