2014-03-06 45 views
1

我從我的服務器獲取URL。我用這個代碼NSURL等於服務器URL

self.bookURL = [aDictionary objectForKey:@"bookurl"];

URL是http://www.test.com/url。如果這個URL匹配,我需要顯示一個UIButton。我如何才能將此網址與self.bookURL相匹配?我在NSLog以下使用,日誌中沒有任何內容顯示。

NSLog(@"book url is %@",bookURL); 
NSString *[email protected]"http://www.test.com/ur"; 
if(bookURL==thumburl){ 

} 
+0

這個'NSLog'語句在哪裏? – rmaddy

+1

而你無法使用'=='比較兩個對象的值。你需要使用'isEqual:'方法。 – rmaddy

+0

如果bookURL未在日誌中顯示,請嘗試登錄'aDictionary'並查看您是否從服務器 –

回答

0

你不能比較字符串(或對象爲此事)。

您可以NSString的轉換爲NSURL和比較是這樣的:

NSURL *thumburl = [NSURL URLFromString:@"http://www.test.com/ur"]; 

if ([self.bookURL isEqual:thumburl]){ 
    //do something 
} 

這假定存儲在NSDictionary的值bookurlNSURL類型的對象。如果你想要做兩個NSString的之間的字符串比較(而不是用NSURL工作),那麼你就可以做到以下幾點:

if ([self.bookURL isEqualToString:thumburl]){ 
    //do something 
} 

第二個例子假設你得到回self.bookURL對象的NSString而不是NSURL。

1

可以使用

NSURL thumburl = [NSURL URLWithString:@"http://www.test.com/ur"]; 

比較使用 可以轉換thumburl成NSURL的URL,然後使用

if([self.bookURL isEqual: thumburl]){ 
    //They match 
} 

比較兩個NSURLs如果它們都是字符串使用

if([self.bookURL isEqualToString:thumbURL]){ 
    //They match 
} 

如果日誌中沒有顯示字典可能返回空字符串,請通過日誌記錄來檢查(或者更好地在字典獲取後填入行中的中斷點)

+1

另外值得一提的是,當比較對象的平等性時,你不應該使用'=='。 '=='是一個很淺的平等檢查。事實上,在這種情況下,只是檢查兩個對象是否佔用相同的內存地址,僅此而已。 –