0

Javaから来て、私は書いています:

NSObject* obj[] = (NSObject* []) [self getResult];

そして、コンパイラは不平を言いますCast to incomplete type 'NSObject *[]'

オブジェクトをオブジェクトの配列にキャストする適切な方法は何ですか?

ありがとう。

4

3 に答える 3

3

言語とライブラリの新しさを認めた場合:通常は、などのコレクションタイプを使用しNSArrayます。同様に、-getResultを返しますNSArray


また、ObjCでは、型キャストは文字通りNSObject型ポインターを別の型として渡すことに注意してください。暗黙の昇格はありません(Javaで見られるように)。をにダウンキャストしたい場合はNSObjectNSArrayを使用できますNSArray * array = (NSArray*)[self getResult];。繰り返しになりますが、プロモーションはありません。結果が、の場合NSStringでもNSString、実行時に処理しています。

Tommyの答え(+1)は、NSArray1つの要素を含むを作成する方法を示しています。最新のコンパイラ機能に依存しない、それを記述する別の方法はですNSArray * array = [NSArray arrayWithObject:[self getResult]];

于 2012-09-26T19:40:25.553 に答える
1

Xcode 4.4以降、単一のオブジェクトを返し、必要なものがオブジェクトの配列であると仮定するとgetResult、おそらく次のようになります。

NSArray *objects = @[ [self getResult] ];

これにより、結果が何であれ、オブジェクトを 1 つだけ含む (不変の) 配列が作成getResultされます。

Objective-C では、配列に任意のオブジェクトを含めることができます。特定の型のオブジェクトを保持するために配列を作成することはありません。

于 2012-09-26T19:44:46.717 に答える
0

組み込みの Array クラスの使用を検討する必要があります。またはNSArray_NSMutableArray

于 2012-09-26T19:42:47.330 に答える