ios – 无法将类型为’NSArray’的值分配给'[AnyObject]’类型的值

前端之家收集整理的这篇文章主要介绍了ios – 无法将类型为’NSArray’的值分配给'[AnyObject]’类型的值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
swift中,我有一个School类,它有一个类型为[AnyObject]的学生属性
class School : NSObject {
  var students: [AnyObject]!
  ...
}

我有一个学校的实例,还有一个代表学生姓名的NSArray字符串.我想将这个NSArray变量分配给学生:

var school = School()
var studentArray : NSArray = getAllStudents()

//ERROR:Cannot assign a value of type 'NSArray' to a value of type '[AnyObject]'
school.students = studentArray

为什么这个错误?是不是swift中的数组与目标c中的NSArray兼容?如何摆脱上面的编译器错误

解决方法

你的var学生是一个Swift数组,并期望AnyObject类型的对象,但你尝试为它分配一个NSArray.这两个对象的类型不同,不起作用.

但是,鉴于NSArray与[AnyObject]兼容,您可以使用简单的类型转换将NSArray转换为Swift数组:

school.students = studentArray as [AnyObject]

当然,更好的方法是留在Swift世界并尽可能地忘记NSArray,方法是让getAllStudents返回一个Swift数组而不是NSArray.您不仅可以避免必须进行类型转换,还可以从Swift集合的强大功能中受益.

猜你在找的iOS相关文章