2011-12-27 4 views
0

Xcode 4.2でObjective-Cを学んでいます。私がやろうとしていることは、とてもシンプルでなければなりませんが、それは私をナットにしています。あるクラスメソッドから別のクラスメソッドにNSStringオブジェクトを渡そうとしていて、NSArrayを正常に渡すことができました。2つのクラスメソッド間でNSStringオブジェクトを渡す

私は周りを見回し、2つのインスタンスメソッド(私はうまく動作するようになる)の間でNSStringオブジェクトを渡す方法に関する質問を見つけました。 2クラスのは以下の通りです:。

+ (double)numberOfOperations:(NSArray *)program equalityTest:(NSString *)testForEquality 
{ 
    NSSet *stackSet = [[NSSet alloc] initWithArray:program]; 
    NSPredicate *predicate = [NSPredicate predicateWithFormat:testForEquality]; 
    NSSet *filteredStackSet = [stackSet filteredSetUsingPredicate:predicate]; 
    return [filteredStackSet count]; 

} 

+ (double)descriptionOfProgram:(NSMutableArray *)program 
{ 
    NSArray *stack = [program copy]; 

    double test = [self numberOfOperations:stack equalityTest:@"+"]; 
    return test; 
} 

私は、コンパイル、および上記のコードを実行して、私はまた、以下のdebbugerコードを貼り付けている 『+「の文字列を解析できません』実行時にエラーが表示されます。

2011-12-27 14:51:53.755電卓[320:F803] *によりキャッチされない例外 'NSInvalidArgumentException'、理由にアプリを終了: 'フォーマットストリングを解析できません "+"'
*
ファースト呼び出しスタックをスローする:
(0x13be052 0x154fd0a 0x94fdc1 0x94fbdf 0x94fb93 0x46fb 0x4829 0x 3c9c 0x2ac3 0x2a3e 0x13bfec9 0x185c2 0x1855a 0xbdb76 0xbe03f 0xbd2fe 0x3da30 0x3dc56 0x24384 0x17aa9 0x12a8fa9 0x13921c5 0x12f7022 0x12f590a 0x12f4db4 0x12f4ccb 0x12a7879 0x12a793e 0x15a9b 0x1f38 0x1e95) 例外(GDB)を投げると呼ば終了。

クラス間でNSStringオブジェクトを渡すことは可能ですか?より多くの情報が必要な場合はお知らせください。

答えて

1

@"+"は有効な述語形式ではないため、指定された形式のNSPredicateオブジェクトを作成できないため、ダミーを吐き出しています。それは文字列を渡すこととは関係ありません。

Predicate Programming Guideの素早いところで、どの述語文字列がどのように見えるかを確認してください。

+0

ありがとうございます!私は述語を再フォーマットすることができましたが、今は正しく機能しています。 –

0

問題は文字列を渡すことではなく、正常に動作しています。問題は述語に問題があります。 "+"は有効な述語ではありません。意味がありません。述部の作成の詳細については、Predicate Programming Guideを参照してください。

+0

ありがとう!私は述語を再フォーマットすることができましたが、今は正しく機能しています。 –

関連する問題