草庐IT

ios - 从不正确的线程访问的 Realm - 再次

我注意到访问Realm对象有很多问题,我认为我的解决方案就是解决这个问题。所以我写了这样简单的帮助方法:publicfuncwrite(completion:@escaping(Realm)->()){DispatchQueue(label:"realm").async{ifletrealm=try?Realm(){try?realm.write{completion(realm)}}}}我认为完成block会很好,因为每次我写对象或更新它时,我都使用上面的这个方法。不幸的是,我遇到了错误:libc++abi.dylib:terminatingwithuncaughtexception

ios - Realm :按子对象中的属性排序

我的Show对象如下所示:classShow:RLMObject{dynamicvarvenue:Venue?}和我的Venue对象:classVenue:RLMObject{dynamicvartitle=""}我需要能够按照Venue对象的标题对我的Show对象进行排序。我尝试了以下但出现错误:allShowsByLocation=Show.allObjects().sortedResultsUsingProperty("venue.title",ascending:true)错误是:无效的排序列',原因:'找不到名为'(null)'的列。 最佳答案

ios - 将数组存储在 Realm 对象中

我是SwiftRealm的新手。有什么方法可以在Realm对象中存储字符串数组吗?我有一个像这样的JSON对象:"firstName":"John","imgName":"e9a07f7d919299c8fe89a30022151135cd63773f.jpg","lastName":"Wood","permissions":{"messages":["test","check","available"]},如何在permissions键中存储messages数组? 最佳答案 你可以这样:classMessages:Object{d

ios - 从 Realm 中分离对象?

假设我有以下场景......ViewController1从主线程上的Realm加载一个Person对象,并将其传递给ViewController2。ViewController2中的用户交互导致相同的Person对象发生更改,但我只想在用户按下“保存”后保留更改。目前,当更改ViewController2中传递的Person对象时,会抛出运行时错误,指出需要在Writeblock中对对象进行更改。这是有道理的,但在这种情况下,我实际上并不想立即保留更改。有没有办法从Realm中分离对象以避免这些检查?如果没有,建议的解决方法是什么?(将对象复制到新实例?单独跟踪对对象的更改并在以后应

ios - 避免向 Realm 添加重复对象

我从Parse.com查询数据并将它们保存在本地Realm数据库(iOS/swift)中。每个对象都有一个独特的属性(A),但也有一个可能相同的属性(B)。避免将具有相同属性B的对象添加到Realm数据库中的最有效方法是什么?提前致谢。 最佳答案 您可以在一个对象上设置一个主键,这样Realm就可以保证每个对象在数据库中只有一个。classPerson:RLMObject{dynamicvarid=0dynamicvarname=""overrideclassfuncprimaryKey()->String{return"id"}}

快速从 Realm 中删除对象

我有从JSON响应中保存列表的Realm对象。但是现在如果对象不在JSON的列表中,我需要删除该对象。我该怎么做?这是我的Realm初始化funclistItems(dic:Array)->Array{letitems:NSMutableArray=NSMutableArray()letrealm=try!Realm()foritemDicindic{letitem=Items.init(item:itemDic)try!realm.write{realm.add(item,update:true)}items.addObject(item)}returnNSArray(items)a

swift - 我用于 Realm 路径定义的#if TARGET_OS_SIMULATOR 代码有什么问题?

我有这个代码#ifTARGET_OS_SIMULATORletdevice=falseletRealmDB=try!Realm(path:"/Users/Admin/Desktop/realm/Realm.realm")#elseletdevice=trueletRealmDB=try!Realm()#endifdevicebool工作正常,但RealmDB仅适用于else条件。 最佳答案 从Xcode9.3+开始,Swift现在支持#iftargetEnvironment(simulator)检查您是否正在为模拟器构建。请停止使用

swift - 如何从 iOS 中完全删除 Realm 数据库?

现在我收到错误“值”属性的属性类型不匹配。旧类型“float”,新类型“double”。如何清除数据库或成功迁移数据库? 最佳答案 要从磁盘中完全删除Realm文件并从头开始,只需使用NSFileManager手动删除它即可。例如删除默认的Realm文件:NSFileManager.defaultManager().removeItemAtURL(Realm.Configuration.defaultConfiguration.fileURL!)如果你想保留Realm文件,但完全清空它的对象,你可以调用deleteAll()来这样做

ios - Realm :结果<T> 和列表<T>

是否可以转换Results至List还是我不应该这样做?在我的例子中,我有一个将List作为参数的方法。我想用获取的对象(Results)和计算的对象(List)调用此方法 最佳答案 Results实现了CollectionType协议(protocol),所以你可以使用reduce来转换它:letresults:Results=...letconverted=results.reduce(List()){(list,element)->Listinlist.append(element)returnlist}您可以将此代码放在扩展

ios - Realm - 无法使用现有主键值创建对象

我有一个对象Person和很多狗。应用程序有单独的页面,它只显示狗和其他页面,它显示人的狗我的模型如下classPerson:Object{dynamicvarid=0letdogs=List()overridestaticfuncprimaryKey()->String?{return"id"}}classDog:Object{dynamicvarid=0dynamicvarname=""overridestaticfuncprimaryKey()->String?{return"id"}}我将人员存储在Realm中。Person有详细信息页面,我们可以在其中获取并展示他的狗。如果狗