【问题标题】:Prevent looping when adding NSManagedObject to CoreData To-Many relationship in Swift在 Swift 中将 NSManagedObject 添加到 CoreData 多对多关系时防止循环
【发布时间】:2014-09-25 12:27:39
【问题描述】:

我正在快速扩展 NSManagedObject 类,并且在尝试将对象添加到关系时遇到了无限循环。一对一正在工作,是的,我的课程命名正确(project.class)。 Xcode 6.0.1。我注意到其他人有这个问题。有没有人有办法解决吗?

这与其他问题类似,尽管这似乎在 Xcode 6 GM+ 中被破坏了

How to assign CoreData many-to-many relationship in Swift?

import CoreData

extension Parent {
    func addChildObject(value:ChildObject) {
        self.mutableSetValueForKey("child").addObject(value)
    }
}

【问题讨论】:

  • 你真的把你和孩子的一对多关系命名为“孩子”吗?
  • 不,这纯粹是举例。它可能是 Car-ToMany-Image。

标签: xcode core-data swift


【解决方案1】:

我测试了这段代码 - 它工作正常。您的无限循环必须是由其他原因引起的。

在访问或设置托管对象属性时检查 setter-getter 是否与 self 混淆。

【讨论】:

  • 所以你正在生成 Swift NSManagedObject 类,使用 Xcode 6.0.1、iOS 8、多对多关系,它工作正常吗?你能详细说明你的模型是什么样的吗?其他人报告了这个问题,所以也许它与多对多关系有关?如果我生成 ObjC 类并使用桥接头,一切都可以正常工作,但如果可以的话,我宁愿使用 Swift。 “在访问或设置托管对象属性时检查 setter-getter 与 self 的混淆。”你能解释一下吗?
  • 是的,以上都是正确的。我只是有太多具有多对多连接的实体。我通过NSLog 和数据库检查了这些值。 -- 在有问题的行之前放置一个断点(即无限循环开始的地方),然后单步执行代码。
  • 命名约定是否有可能导致这种情况迅速发生? (区分大小写?)(即,名为“image”的关系指向 To-Many Image 对象?这可能是我唯一能想到的。否则,我很难过。
  • 如果您愿意,我可以分享我的代码。我花了5分钟来写。这个名字与它无关。唯一的规则是:不能以大写字母开头,也不能保留字。
猜你喜欢
  • 1970-01-01
  • 2011-07-19
  • 2014-09-27
  • 1970-01-01
  • 1970-01-01
  • 2014-04-10
  • 1970-01-01
  • 2014-09-05
  • 1970-01-01
相关资源
最近更新 更多