将集合转换为数组?

Posted

技术标签:

【中文标题】将集合转换为数组?【英文标题】:Converting Set to Array? 【发布时间】:2017-03-12 17:04:54 【问题描述】:

当通过关系从 CoreData 检索对象集合时,swift 给了我一个 NSSet 而不是我预期的数组。

有没有办法可以

代码:

var updateExercise : UserExercise?

destinationViewController?.userExerciseSets = self.updateExercise?.exercisesets as? [UserExerciseSet]

注意事项

从 'NSSet?' 转换?到不相关的类型“[UserExerciseSet]”总是失败

目标 VC 具有 var : var userExerciseSets : [UserExerciseSet]?

【问题讨论】:

【参考方案1】:

你应该这样定义你的 NSManagedObject 模型:

class UserExercise: NSManagedObject 
   @NSManaged var exercises: Set<Exercise>!

然后当你需要一个数组时,你可以简单地使用数组的构造函数,它接受一个集合。

let exercises = Array(userExercise.exercises)

【讨论】:

确实如此,但请记住,这是一个集合是有原因的 - 无法保证顺序,并且使用相同的 SetArray() 的两次调用可能不会返回元素的排序方式相同... 正确,如果它用于在 UI 中显示,除此之外还应该有一个明确的排序。很好的收获。

以上是关于将集合转换为数组?的主要内容,如果未能解决你的问题,请参考以下文章

将集合转换为数组?

转载C#使用ToList()将数组快速转换为List集合

Laravel:将 Eloquent 集合转换为数组而不转换元素

如何将 Laravel 集合数组转换为 json

将对象数组转换为虚拟 mongodb 集合

Laravel 集合将数组转换为对象