草庐IT

swift - 在后台线程上写入后,Realm 通知何时传递到主线程?

我看到了不应该发生或极有可能发生的崩溃,而文档只是不够清楚地说明了原因。更新:虽然我不同意下面要求我将其分成多个SO问题的评论,但如果有人可以专注于这个问题,我认为这会有很大帮助:通知何时传递到主线程?主线程上的结果是否可能与之前的运行循环中的结果不同,但尚未通知差异?如果这个问题的答案是是的,结果可能与以前的运行循环不同而没有通知,那么我认为将其写入文档的某个地方是至关重要的。后台写入首先,我认为回顾一下我已经为写入所做的工作很重要。我所有的写入都是通过一个基本上看起来像这样的方法执行的(除了错误处理):funcwrite(block:@escaping(Realm)->()){so

ios - 无法在路径中打开 Realm

我尝试使用捆绑的Realm文件但没有成功。我知道我的Realm文件已成功复制到我的应用程序目录,但我无法读取它。fatalerror:'try!'expressionunexpectedlyraisedanerror:"Unabletoopenarealmatpath'/Users/…/Library/Developer/CoreSimulator/Devices/…/data/Containers/Data/Application/…/Documents/default-v1.realm'.Pleaseuseapathwhereyourapphasread-writepermissi

ios - 检测 Realm.io 数据库是否需要迁移——如果需要,销毁它

我在短期内使用Realm进行缓存,并且不需要跟上架构版本或在数据模型发生更改时随时迁移。因此,为了避免在数据模型发生更改时崩溃,我的应用程序如何通过取消默认Realm并从头开始来巧妙地处理差异?提前致谢! 最佳答案 自从Swift2引入try/catch以来,这对我来说一直很有效。我只是在启动时从我的应用程序委托(delegate)调用testRealmFile(),之后一切都很好。functestRealmFile(){do{tryRealm().objects(Model1)tryRealm().objects(Model2)}

ios - 如何正确处理 realm.io 关系的创建和更新

我有两个RLMObjects:classTimeline:RLMObject{dynamicvarentries=RLMArray(objectClassName:Entry.className())dynamicvarid=0dynamicvartitle=""dynamicvarcoverPhoto=""dynamicvarbody=""overrideclassfuncprimaryKey()->String{return"id"}}classEntry:RLMObject{dynamicvarid:Int=0dynamicvartimelineID:Int=0dynamicva

ios - Realm 因 RLMException : object has been deleted or invalidated 崩溃

我有一个存储时间线的Realm模型(我正在制作视频编辑应用程序)并且它经常在访问它的RMArray属性时崩溃。该应用程序已经发布,我自己还没有体验过,但我的crushlytics经常通知我这次崩溃。这是崩溃日志:FatalException:RLMExceptionObjecthasbeendeletedorinvalidated.Thread:FatalException:RLMException0CoreFoundation0x2614d45f__exceptionPreprocess+1261libobjc.A.dylib0x3407ec8bobjc_exception_thro

ios - 如何在 UITableViewController 中正确使用 Realm 对象?

我正在尝试在我的UITableViewController中使用Realm,如果我将对象转换为它的类,每当我尝试在行索引处找到对象时我都会遇到问题(如果我使用了错误的术语请原谅我,我对Swift、Realm和iOS开发还是很陌生!)...我有一个看起来像这样的Site类,数据库有几千个条目:classSite:RLMObject{varid:String=""varname:String=""}在我的TableViewController中,当我尝试根据结果集中的索引获取Site以加载到单元格中时,如果我尝试将其转换为Siteobject它总是nil!如果我使用AnyObject设置它

swift - Realm 的写事务

我对Realm的写入事务感到困惑。我必须在写入事务中对对象进行所有修改,还是可以只进行一些修改,然后再将所有内容写入磁盘?第一个选项似乎有点矫枉过正,当然也很乏味。 最佳答案 (免责声明:我为Realm工作)没错!一旦对象被添加到Realm()对象中,它只能在之后的写事务中被修改。这样做是为了确保线程安全。当Realm()在其上打开了写入事务时,它会阻止所有其他线程同时尝试打开写入事务(让它们等待直到事务关闭)。这看起来确实有点矫枉过正,我们当然正在寻找方法来尝试使其更加精简,但就目前而言,我们认为这种实现模式提供了最安全的方式来确

swift - 最常出现的Realm

我有一个包含列supervisor的对象。在supervisor中有以下值:约翰玛丽菲尔约翰我怎样才能归还约翰?classPerson:Object{dynamicvarname:String=String() 最佳答案 RealmResults实现RealmCollectionTypeRealmCollectionType具有count属性和max(_:)聚合操作。你需要做的是这样的(以下是伪代码,不会编译,只是为了说明问题):results.filter{elementinelement.count==results.max(b

swift - 使用 NSPredicate 和 block 过滤 Realm 的区别

我想知道Realm的查询性能。鉴于此代码:letresult1=realm.objects(Person.self).filter("ageresult1是通过使用NSPredicate过滤Person对象创建的,而result2使用过滤>filter方法来自Swift的集合类型。这两种过滤方法之间是否存在性能差异? 最佳答案 是的,这两种方法之间存在性能差异。NSPredicate-based过滤由Realm的查询引擎执行,它直接过滤Realm文件中的数据,而无需创建Person的实例。.它可以利用数据库结构的知识来更有效地执行查

swift - 如何正确删除一个Realm子对象?

无法在文档或Google中找到关于此的具体信息,所以这里是示例:classParent:Object{letchildren=List()}classChild:Object{weakvarparent:Parent?}当我想删除一个特定的child“child1”时,我应该只使用:Realm().write{realm.delete(child1)}或者我应该像这样在父级中手动删除它(很麻烦):ifletparent=child1.parent{ifletidx=parent.children.indexOf(child1){parent.children.removeAtIndex