0

配列を整数で埋めようとしています。しかし、思ったほど簡単ではないという不思議なことがあります。これが何が起こるかの説明です。

コードの最後の行でエラーが発生します。「int から NSArray への暗黙的な変換は許可されていません」

//.h file
{
NSArray storeDisk[15];
}
property int virdCount;
property (nonatomic, strong)NSArray *storeDisk;

//.m file

virdCount+=virdCount;
storeDisk[0]=virdCount;
4

4 に答える 4

6

整数をに入れたい場合はNSArray、を使用する必要がありますNSNumber

例えば:

NSArray *a = [NSArray arrayWithObject:[NSNumber numberWithInt:virdCount]];

または、速記があります:

NSArray *a = @[@(virdCount)];

いずれにせよ、データを元に戻すには:

int value = [[a objectAtIndex:0] intValue];
于 2013-03-12T16:45:16.147 に答える
1

NSArray の理解に根本的な誤りがあるようです。いくつかの iOS チュートリアルを読んで、コア ココア クラスの構文と使用法を学ぶことをお勧めします。

次の行:

NSArray storeDisk[10];

10 セルの NSArray を生成しません。

未編集の質問のように、これも機能しません。

NSArray* storeDisk[15];

これは、15 個の NSArray ポインターの配列を生成するだけです。これは、15 個の NSArray の配列を作成しようとした場合にのみ役立ちます (それでも、Objective-C でこれを行うより良い方法があります)。

NSArray について読み、正しい構文を使用して使用する必要があります。それ以外では、NSArray は不変であるため、適切な選択ではありません。配列にオブジェクトを追加する場合は、可変配列を使用する必要があります。次に、整数を挿入するには、数値用のココア ラッパー (NSNumber) を使用する必要があります。NSArray はオブジェクトのみを保持できます。

20 個のセルを持つ NSArray を生成するために、1 つの可能性は次のコードを使用することです。

NSMutableArray* array = [NSMutableArray arrayWithCapacity:20];
[array insertObject:[NSNumber numberWithInt:virdCount] atIndex:10];

それでも、一時停止しチュートリアルドキュメントを読むことを強くお勧めします。

編集された質問を反映するように編集されました。

于 2013-03-12T16:47:29.287 に答える
1

以下の方法で配列を作成する必要があります。

.h ファイル内:

{
    NSMutableArray *storeDisk;
}
property int virdCount;
property (nonatomic, strong)NSMutableArray *storeDisk;

NSMutableArray *storeDisk = [[NSMutableArray alloc] init];
[storeDisk addObject:virdLabel.text];
于 2013-03-12T16:40:02.673 に答える
0

int をそのまま配列に追加することはできません。配列はオブジェクトのみを受け入れることができるため、(id) または他の目的の c オブジェクトを使用して作成されます。int を NSArray に追加したい場合は...

[arrayObj addObject:[NSNumber numberWithInteger:0]];
[arrayObj addObject:[NSNumber numberWithInteger:1]];
于 2014-10-16T16:56:56.760 に答える