在
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集合的强大功能中受益.