[英]Cannot assign a value of type 'NSArray' to a value of type '[AnyObject]'
在swift中,我有一個School
類,它有一個類型為[AnyObject]!
的students
屬性[AnyObject]!
class School : NSObject {
var students: [AnyObject]!
...
}
我得到了一個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
為什么這個錯誤? 是不是swift中的數組與目標c中的NSArray兼容? 如何擺脫上面的編譯器錯誤?
你的var students
是一個Swift數組,並期望AnyObject
類型的AnyObject
,但你嘗試為它分配一個NSArray
。 這兩個對象的類型不同,不起作用。
但是,鑒於NSArray
與[AnyObject]
兼容,您可以使用簡單的類型轉換將NSArray
轉換為Swift數組:
school.students = studentArray as [AnyObject]
當然,更好的方法是留在Swift世界並盡可能地忘記NSArray,方法是讓getAllStudents
返回一個Swift數組而不是NSArray。 您不僅可以避免必須進行類型轉換,還可以從Swift集合的強大功能中受益。
聽起來像school.students
被定義為Optional,因此如果你確定它不是nil可能是nil - 首先使用!解包它:
school.students as AnyObject! as NSArray
要么
school.students! as NSArray
我在object c中編寫的方法返回類型為“Database”的NSMutableArray
-(NSMutableArray *)AllRowFromTableName:(NSString *)tableName;
在swift中我聲明變量為
var petListArray: NSMutableArray = []
將模型數組保存為
self.petListArray = self.dataBase.AllRowFromTableName("InsuranceTable")
用於cellForRowAtIndexPath
let tempDBObject = self.petListArray[indexPath.row] as! Database
cell?.petName.text = tempDBObject.Hname
希望這有幫助的人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.