2012-07-23 15 views
0

這是我第一次在iOS中使用for循環!歡呼!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都爲空。應該發生的是,數組中任何標題與bookTitle匹配的對象應該將其標題分配給nameLabel。

所以我想知道我哪裏出了問題,還有更好的解決方案嗎?因爲title屬性不是一個唯一的標識符,所以如果我向書中添加兩個具有相同標題的對象(不太可能我會這樣做,但仍然!),它會返回多個對象,這是不好的。

在此先感謝。

+0

我不認爲錯誤出現在您提供的代碼中。看起來你可能沒有正確地在你的Book init方法中設置標題。另外,你應該使用isEqualToString:來比較tb.title和bookTitle。 =正在將tb.title設置爲bookTitle。 isEqualToString:檢查兩個字符串是否相同。 – enbr 2012-07-23 00:44:21

回答

1

您的if聲明中有錯誤。

if (tb.title = bookTitle) 

你只需要在那裏一個=,使你保持設定tb.titlebookTitle所有的時間。

但是,而不是增加另一個等號,這樣做:

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

更多信息here

+1

哇,我完全忘了isEqualToString :.謝謝!我上面更新了我的評論。 – enbr 2012-07-23 00:48:12

+0

非常好,謝謝。 bookTitle仍然是可悲的,因爲我無法從前一個視圖控制器到第二個視圖控制器獲取值。我想解決這個問題的最好方法是讓firstviewcontroller成爲第二個viewcontroller的委託。謝謝你的幫助。 – 2012-07-23 01:26:14