在 Swift 中将 NSManagedObject 添加到 CoreData 多对多关系时防止循环
Posted
技术标签:
【中文标题】在 Swift 中将 NSManagedObject 添加到 CoreData 多对多关系时防止循环【英文标题】:Prevent looping when adding NSManagedObject to CoreData To-Many relationship in Swift 【发布时间】: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。 【参考方案1】:我测试了这段代码 - 它工作正常。您的无限循环必须是由其他原因引起的。
在访问或设置托管对象属性时检查 setter-getter 是否与 self
混淆。
【讨论】:
所以你正在生成 Swift NSManagedObject 类,使用 Xcode 6.0.1、ios 8、多对多关系,它工作正常吗?你能详细说明你的模型是什么样的吗?其他人报告了这个问题,所以也许它与多对多关系有关?如果我生成 ObjC 类并使用桥接头,一切都可以正常工作,但如果可以的话,我宁愿使用 Swift。 “在访问或设置托管对象属性时检查 setter-getter 与 self 的混淆。”你能解释一下吗? 是的,以上都是正确的。我只是有太多具有多对多连接的实体。我通过NSLog
和数据库检查了这些值。 -- 在有问题的行之前放置一个断点(即无限循环开始的地方),然后单步执行代码。
命名约定是否有可能导致这种情况迅速发生? (区分大小写?)(即,名为“image”的关系指向 To-Many Image 对象?这可能是我唯一能想到的。否则,我很难过。
如果您愿意,我可以分享我的代码。我花了5分钟来写。这个名字与它无关。唯一的规则是:不能以大写字母开头,也不能保留字。以上是关于在 Swift 中将 NSManagedObject 添加到 CoreData 多对多关系时防止循环的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift 中将字符串写入 NSOutputStream