0

iOSでforループを使用したのはこれが初めてです。フラ!

「bookTitle」はクラス内のNSStringオブジェクトであることに注意してください。このクラスが開始すると、String引数を取り、bookTitleをそれに設定します。

books = [[NSMutableArray alloc] initWithObjects:

[[Book alloc] initWithTitle:@"What a great title" andAuthor:@"R Crimson"], 

[[Book alloc] initWithTitle:@"What another great title" andAuthor:@"R Crimson"], 
 nil ];
NSUInteger count = [books count];
for(NSUInteger i= 0; i < count;i++){
    Book *tb= [books objectAtIndex:i];
    if(tb.title=bookTitle){
        nameLabel.text=tb.title;
    }

残念ながら、tb.titleとbookTitleはどちらもnullです。何が起こるかというと、bookTitleと一致するタイトルを持つ配列内のオブジェクトには、そのタイトルがnameLabelに割り当てられる必要があります。

だから私はどこが間違っているのか、そしてまたより良い解決策があるかどうか疑問に思っていますか?title属性は一意の識別子ではないため、同じタイトルの2つのオブジェクトを本に追加すると(これまでとは異なりますが、それでも!)、複数のオブジェクトが返されますが、これは適切ではありません。

前もって感謝します。

4

1 に答える 1

1

あなたのif発言には誤りがあります。

if (tb.title = bookTitle)

そこには1つしかない=ので、常に設定tb.titleし続けますbookTitle

ただし、別の等号を追加する代わりに、次のようにします。

if ([tb.title isEqualToString:bookTitle]) {
    ...
}

詳細はこちら

于 2012-07-23T00:45:45.973 に答える