2010-08-28 30 views
1

我看不出爲什麼這不起作用。我有兩個實體,我們稱他們爲員工和部門。而Departments有一個叫做division的String屬性。這是完美的作品:CoreData字符串屬性不起作用的平等

NSLog(@"Division: %@",employee.department.division); 

控制檯顯示,比方說,「全球海鮮」。但是,如果我嘗試使用完全相同的字符串對比,它失敗:

if(employee.department.division == @"Worldwide Seafood") NSLog(@"Works in seafood!"); 

沒有顯示在控制檯,即比較是不工作,因爲它應該。

對任何人都有意義嗎?謝謝。

回答

1

使用==比較NSObject實例(在此情況下NSString實例)是由於目標C的實例的指針的比較不能在堆棧上創建的。因此,您的代碼會詢問NSString實例employee.department.division與靜態字符串是否是相同的指針(相同的內存位置)。這幾乎肯定不是這種情況。

您應該使用

[employee.department.division isEqualToString:@"Worldwide Seafood"] 

更一般地,你應該使用-[NSObject isEqual:]比較對象實例。

+0

謝謝!這工作,解釋真的很有幫助! – ed94133 2010-08-29 04:45:40

1

嘗試此代替if ([employee.department.division isEqualToString:@"Worldwide Seafood"])...