如何从 NSSet 返回 NSMutableArray

Posted

技术标签:

【中文标题】如何从 NSSet 返回 NSMutableArray【英文标题】:How to return an NSMutableArray from an NSSet 【发布时间】:2011-04-19 02:53:23 【问题描述】:

我可以像这样将NSSet 的内容放入NSMutableArray 中:

NSMutableArray *array = [set allObjects];

编译器会抱怨,因为 [set allObjects] 返回的是 NSArray 而不是 NSMutableArray。应该如何解决?

【问题讨论】:

【参考方案1】:

由于-allObjects 返回一个数组,您可以创建一个可变版本:

NSMutableArray *array = [NSMutableArray arrayWithArray:[set allObjects]];

或者,如果您想处理对象所有权:

NSMutableArray *array = [[set allObjects] mutableCopy];

【讨论】:

注意:如果setnil,这两种方法会有细微的差别。【参考方案2】:

对于有序集合使用:

NSArray *myArray = [[myOrderedSet array] mutableCopy];

【讨论】:

似乎没有 NSSet - array 方法。【参考方案3】:

我通过使用 NSMutableArray's 方法 'addObjectsFromArray' 将所有 NSSet 对象分配给 NSMutableArray 解决了崩溃问题,例如:

[mutableArray addObjectsFromArray:[cg_Schedule.schedule_Days allObjects]];

希望对你有帮助。

【讨论】:

以上是关于如何从 NSSet 返回 NSMutableArray的主要内容,如果未能解决你的问题,请参考以下文章

如何从包含任意对象的 NSSet 创建排序的 NSArray?

核心数据,如何从关系集合中删除一个元素(NSSet)

coreData:从 NSSet 实体移动记录

附加一个带有数组值的 NSSet

将项目从 NSArray 传输到 NSManagedObject 的 NSSet

如何使用核心数据的添加和删除(NSSet)访问器方法?