0
+ (NSString *)numberMatching: (NSString *)number and: (NSString *)secondNumber
{
   NSString *returnNumber;
   if ([number isEqualToString:secondNumber]) {
      returnNumber = number;
   } else {
      NSMutableArray *validNumber = [[self validNumbers] copy];
      [validNumber removeObject:number];
      [validNumber removeObject:secondNumber];
      returnNumber = validNumber[0];
   }
   return returnNumber;
}

重要な場合は、validNumberのコードを次に示します。

+ (NSArray *)validNumbers
{
   static NSArray *validNumbers = nil;
   if (!validNumbers) validNumbers = @[@"one",@"two",@"three"];
   return validNumbers;
}

実行すると、次のエラーが発生します。

-[_ NSArrayI removeObject:]:認識されないセレクターがインスタンス0x1ed60f00に送信されました...キャッチされない例外のためにアプリを終了しています'NSInvalidArgumentException'、理由:'-[ _NSArrayI removeObject:]:認識されないセレクターがインスタンス0x1ed60f00に送信されました'

これは、removeObjectがNSMutableArrayの有効なメソッドではないことを示しているように見えますが、有効です。

基本的に、私がやりたいのはこれです。2つの引数が一致する場合は、値を返します。それらが一致しない場合は、3番目の可能性を返します(どちらの引数にも一致しません)。

4

2 に答える 2

3

ですから。validNumber_ NSArrayからオブジェクトを削除(または追加)することはできませんNSArray。代わりに使用NSMutableArrayしてください:mutableCopy

NSMutableArray *validNumber = [[self validNumbers] mutableCopy];
[validNumber removeObject:number];
[validNumber removeObject:secondNumber];
于 2013-03-17T17:54:10.907 に答える
0

copyメッセージをに送信するNSArrayと、取得するコピーもNSArrayインスタンスであり、不変の配列からオブジェクトを削除することはできません。mutableCopy可変コピーを取得するには、次のメッセージを送信する必要があります。

NSMutableArray *validNumber = [[self validNumbers] mutableCopy];
于 2013-03-17T18:00:44.957 に答える