2015-09-07 8 views
6

を型「にNSArray」の値を割り当てることができません、私はSchoolクラスを持っている、それはタイプ[AnyObject]!は「[ANYOBJECT]」型の値に迅速に

class School : NSObject { 
    var students: [AnyObject]! 
    ... 
} 

students性質を持っている私は、インスタンスを得ましたSchoolと、生徒の名前を表す文字列のNSArrayがあります。私はstudentsにこの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 

なぜこのエラー?目的のCのNSArrayとswiftの互換性はありませんか?上記のコンパイラエラーを取り除くには?

+0

宣言で実際の型を使用すると、コンパイラは一般に「良いこと」である代入を実行できます。 – zaph

答えて

6

studentsはSwift配列で、タイプがAnyObjectのオブジェクトが必要ですが、NSArrayに割り当ててみてください。 2つのオブジェクトは同じタイプではなく、動作しません。

しかし、NSArrayあなたはスウィフト配列にNSArrayを作るために、単純な型キャストを使用することができ、[AnyObject]と互換性があることを考える:もちろん

school.students = studentArray as [AnyObject] 

より良いアプローチは、スウィフト世界にとに滞在するだろうできるだけNSArrayを忘れてください。getAllStudentsはNSArrayではなくSwift配列を返します。あなたは型キャストをやらなければならないだけでなく、Swiftコレクションの恩恵も受けます。

2

school.studentsがオプションとして定義されていて、そのないゼロと確信している場合ので、nilをかもしれないような音 - 使用して最初にそれをアンラップ:!

school.students as AnyObject! as NSArray 

OR

school.students! as NSArray 
0

私の方法が書かれました"データベース"タイプのNSMutableArrayを返すオブジェクトC内

-(NSMutableArray *)AllRowFromTableName:(NSString *)tableName; 

swift i dec

self.petListArray = self.dataBase.AllRowFromTableName("InsuranceTable") 
cellForRowAtIndexPath

で使用

let tempDBObject = self.petListArray[indexPath.row] as! Database 
cell?.petName.text = tempDBObject.Hname 

としてモデル配列で

var petListArray: NSMutableArray = [] 

として保存LARE変数は、このヘルプ誰かを願っています。