0

他のクラスの変数で配列を設定する方法を理解しようとしています。myObject という名前のクラスがあります。ここで、型NSObjectの変数 myInt および mySecondInt を宣言しましintた。

次に、myObject をインポートして、次のような配列を設定しようとしました。

MyObject *object = [[MyObject alloc]init];

    object.myInt = 50;
    object.mySecondInt = 15;

    object.array = [[NSArray alloc]initWithObjects:object.mySecondInt,object.myInt, nil];

そして、エラーが発生しました: への暗黙の変換は、アーク'int''id'は許可されていません

これを解決するのを手伝ってください。私はobjective-cを学んでおり、他のクラスの変数を管理する方法を知りたいです。

4

3 に答える 3

2

NSArray はオブジェクト (NSObject またはそのサブクラスのインスタンス) のみを保持できますが、myInt および mySecondInt は C の int 値であり、オブジェクトではありません。

あなたはこれを行うことができます:

object.array = [[NSArray alloc]initWithObjects:[NSNumber numberWithInt:object.mySecondInt],[NSNumber numberWithInt:object.myInt], nil];

または、新しい Xcode を使用する場合は、次のように簡単に記述できます。

object.array = @[@50,@15];
于 2012-12-18T07:39:18.363 に答える
2

プリミティブの場合、それらをオブジェクトとして格納できるようにするためのラッパー クラスが必要です。

元。

[[NSArray alloc]initWithObjects:[NSNumber numberWithInt:object.mySecondInt],[NSNumber numberWithInt:object.myInt], nil];

NSArrayこれはidジェネリック ポインター (オブジェクト参照) です。プリミティブはこのカテゴリには該当せず、Objective-C はオートボクシングをサポートしていません。

于 2012-12-18T07:36:49.570 に答える
0

NSArraymyInt と mySecondInt は int 値であり、オブジェクトではありません。NSNumberまたはに型キャストできますNSString。型キャストする場合は、使用時NSStringにアクセスしますintValue。別の方法は、オブジェクト全体を配列に追加し、配列からオブジェクトを取得してから、個々のエンティティを追加するよりも優れたソリューションであるエンティティにアクセスすることです。

于 2012-12-18T07:39:51.663 に答える