在swift中,我有一个School
类,它有一个students
类型的属性[AnyObject]!
class School : NSObject {
var students: [AnyObject]!
...
}
Run Code Online (Sandbox Code Playgroud)
我有一个实例School
和一个NSArray
代表学生姓名的字符串.我想将此NSArray
变量分配给students
:
var school = School()
var studentArray : NSArray = getAllStudents()
//ERROR:Cannot assign a value of type 'NSArray' to a value of type '[AnyObject]'
school.students = studentArray
Run Code Online (Sandbox Code Playgroud)
为什么这个错误?是不是swift中的数组与目标c中的NSArray兼容?如何摆脱上面的编译器错误?
你的var students
是一个Swift数组,并期望对象的类型AnyObject
,但你尝试分配它NSArray
.这两个对象的类型不同,不起作用.
但是,鉴于它NSArray
兼容[AnyObject]
,您可以使用简单的类型转换来NSArray
进入Swift数组:
school.students = studentArray as [AnyObject]
Run Code Online (Sandbox Code Playgroud)
当然,更好的方法是留在Swift世界并尽可能地忘记NSArray,方法是getAllStudents
返回一个Swift数组而不是NSArray.您不仅可以避免必须进行类型转换,还可以从Swift集合的强大功能中受益.
归档时间: |
|
查看次数: |
8108 次 |
最近记录: |