0

int値を持つNSMutableArrayオブジェクトを取得しましたが、次の方法で特定の値を取得できます。

int *v0=[[[arrayObj objectAtIndex:0] intValue];

問題はない。

しかし、NSString値を持つNSMutableArrayオブジェクトを取得しましたが、次の方法で特定の値を取得できません。

NSString *v0=[[[arrayObj objectAtIndex:0] stringValue];
//raises error

stringValueが何のためにあるのか、そしてなぜこのエラーが発生するのかを正確に学び、理解したいのですが?

NSString * v0 = [arrayObj objectAtIndex:0]; 期待どおりに動作します。nullで終了したある種のポインタを使用して、値をリーチできるようにします。この行がUnicode/エンコードされた文字列セーフコードでもあるかどうかはわかりません。

結論:
いくつかの行またはコードスニペットでstringValueの目的を知りたい

4

2 に答える 2

1

発生するエラー(ただし、質問を投稿できない場合)は、不明なセレクターがインスタンスに送信されます。これは、メソッドNSStringがないためです。stringValue

あなたが提案するアプローチは正しいです:

NSString *v0 = [arrayObj objectAtIndex:0];

編集(@Answerbotの回答によって促されます):

混乱する理由は[NSString intValue]、文字列が整数を表す限り、文字列値を整数に変換するために使用されるためです(つまり@"123")。ただし、オブジェクトはすでに文字列であるため、文字列にはこれは必要ありません。したがって、提供されていません。

于 2013-02-08T16:32:12.173 に答える
1

int値を持つNSMutableArrayオブジェクトを取得しました

それは不可能です。Cocoa配列には常にオブジェクトが含まれています。NSNumber次のように、整数をラップするオブジェクトの配列がある可能性があります。

NSArray *arrayOfNumbers = @[@1, @2, @3];

NSNumberオブジェクトにはintValueメソッドがあるため、これは機能します。

int value = [arrayOfNumbers[0] intValue];

一方、文字列の配列がある場合..。

NSArray *arrayOfStrings = @[@"1", @"2", @"3"];

...文字列オブジェクトを他のものに変換せずに、個々の要素に直接アクセスしたい場合:

NSString *element = arrayOfStrings[0];

NSStringオブジェクトはメソッドを理解しませんstringValue

[arrayOfStrings[0] stringValue]; // crash: does not recognize selector

最初に戻ると、NSNumber最初の配列のオブジェクトは理解していますstringValue。これを使用して、数値を文字列に変換できます。

NSString *intString = [arrayOfNumbers[0] stringValue];

混乱を完全にするために、メッセージNSString 理解してください。intValue

int value = [arrayOfStrings[0] intValue];

これは、文字列をプレーンなC値intValueに変換しようとすることを意味します。int

于 2013-02-08T16:53:46.290 に答える