Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.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
Swift 从iOS上的本地域数据库中删除多个对象_Swift_Realm - Fatal编程技术网

Swift 从iOS上的本地域数据库中删除多个对象

Swift 从iOS上的本地域数据库中删除多个对象,swift,realm,Swift,Realm,我正在完成一个应用程序,它使用一个本地领域数据库,有三个模型。当我从主模型中删除一个对象时,子模型中的连接对象应该全部删除,但每个模型中只删除一个对象。见附件图表 不知道下一步该去哪里。任何帮助都将不胜感激 谢谢 祝福,, -标记 这是领域js的正常行为。 删除主模型的一个图元时,与之相关的子图元仍存在于数据库中 唯一的解决方案是获取所有子元素并首先删除它们。 例如,如果您有一个名为“订单”的主模型和一个名为“客户”的子模型: 你也可以找到同样问题的相关帖子 或 其他有此问题的人,知道必须先删除

我正在完成一个应用程序,它使用一个本地领域数据库,有三个模型。当我从主模型中删除一个对象时,子模型中的连接对象应该全部删除,但每个模型中只删除一个对象。见附件图表

不知道下一步该去哪里。任何帮助都将不胜感激

谢谢

祝福,, -标记


这是领域js的正常行为。 删除主模型的一个图元时,与之相关的子图元仍存在于数据库中

唯一的解决方案是获取所有子元素并首先删除它们。
例如,如果您有一个名为“订单”的主模型和一个名为“客户”的子模型:

你也可以找到同样问题的相关帖子 或

其他有此问题的人,知道必须先删除子数据库后,解决方案就不言而喻了。再次感谢您指出这一点

//get the object at indexPath.row
           let a = self.master![indexPath.row]
           let id = a.Id //master's record ID
           let n = realm.objects(Child1.self).filter("Id = %@", id)
           let r = realm.objects(Child2.self).filter("Id = %@", id)

           //Delete object at indexPath.row
           try! realm.write {
               realm.delete(n)
               realm.delete(r)
               //delete last
               realm.delete(a)
           }
祝福,,
-马克

非常感谢,这很有帮助。我正在使用Swift,但我明白了。谢谢你的回复!请为问题添加适当的标签。如果您正在使用swift,请添加它(我是为您这样做的)。此外,问题要清楚,这一点很重要;使用像连接对象这样的词语是模糊的。它们是如何连接的?它们是否像列表一样存储在集合中?如果是这样,则这些是对其他对象的引用,不应删除它们。最重要的是,包括你的代码,因为这是一个编程网站,几行代码可以说上千个单词。请查看Ok谢谢您的澄清。此解决方案在其书面上下文中没有意义
let id=a.id
get's master record id,然后过滤子对象id以获得master record id?子对象Id将是它自己的Id,而不是主记录Id。也许子对象没有自己的Id?如果你能澄清这是如何回答这个问题的,我们可以投票表决,这样它可以帮助其他人。当然。主Id是真理的源泉。子数据库需要筛选与主ID匹配的记录,以便只删除与单个主ID对象关联的记录,而保留主数据库中的其他对象和两个子数据库关联记录中的对象不变。主ID在创建时保存在子数据库对象中,以便它知道哪个主对象属于它。这是我创建的Garage Record应用程序的删除功能。主数据库保存数据库中的单个车辆,一个子数据库包含特定车辆的单个维修记录,另一个子数据库包含关于所述特定车辆维修的注释。我希望这能澄清我在做什么,以及是否对其他人有帮助。那么您的子对象有一个属性
ID
,但它实际上是主对象ID?如果是这样,您可能希望使用反向关系,或者将属性命名为更清晰的名称,如“master\u id”或“parent\u id”。通常,如果它只是命名为“Id”,则假定它是该对象的Id。
//get the object at indexPath.row
           let a = self.master![indexPath.row]
           let id = a.Id //master's record ID
           let n = realm.objects(Child1.self).filter("Id = %@", id)
           let r = realm.objects(Child2.self).filter("Id = %@", id)

           //Delete object at indexPath.row
           try! realm.write {
               realm.delete(n)
               realm.delete(r)
               //delete last
               realm.delete(a)
           }