coredata 如何将默认 NSSet 更改为 NSMutableArray

Posted

技术标签:

【中文标题】coredata 如何将默认 NSSet 更改为 NSMutableArray【英文标题】:coredata how to change default NSSet to NSMutableArray 【发布时间】:2013-01-31 01:53:42 【问题描述】:

CoreData 一对多默认生成NSSet,如何将NSSet改为NSMutableArray?我尝试手动更改,但报错:

 _NSFaultingMutableSet filteredArrayUsingPredicate:]: unrecognized selector sent to instance 0x1ed35e40'

【问题讨论】:

【参考方案1】:

NSSet 有方法allObjects,它返回一个NSArray

要获得NSMutableArray,您可以这样做:

NSMutableArray *array = [NSMutableArray arrayWithArray:myCoreDataObject.mySet.allObjects];

注意:不保证每次的顺序都相同(集合不排序)。如果订单对您很重要,请考虑使用NSOrderedSet

另请参阅NSSet 上的文档:

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSSet_Class/Reference/Reference.html

PS:

您收到上述错误的原因:

NSSet(或_NSFaultingMutableSet)没有名为filteredArrayUsingPredicate的方法。

【讨论】:

如果 myCoreDataObject.mySet 已更改,如何更新 NSArray? @jay 呃,小心点……? ;) 将新问题作为评论提出是一种不好的形式...改为打开一个新问题。

以上是关于coredata 如何将默认 NSSet 更改为 NSMutableArray的主要内容,如果未能解决你的问题,请参考以下文章

CoreData如何将项目添加到与实体相关的NSSet

coreData:从 NSSet 实体移动记录

CoreData 一对多关系。 NSSet 归属问题

用 CoreData 对象填充 NSSet

如何使用 NSPredicate 通过 CoreData 中的 NSSet 属性的元素过滤对象?

具有多个 NSSet 的 CoreData NSPredicate