2009-07-29 91 views
2

我有錯誤 - [NSCFString stringValue的]:執行此代碼 時,我不明白我在做什麼錯 名稱是無法識別的NSString的選擇發送到實例0x1578c在NSMutableArray中獲取字符串:爲什麼它不起作用?

self.searchValues= [[NSMutableArray alloc] init]; 
[email protected]"Bob"; 
if(self.name!=nil) 
    [searchValues addObject: [NSMutableDictionary dictionaryWithObjectsAndKeys:@"Name",@"Label",self.name,@"Value",nil]]; 
NSLog(@"Array value : %s",[[[searchValues objectAtIndex:0] objectForKey:@"Value"] stringValue]); 

回答

3

首先,你可以放下[... stringValue]消息。沒有必要,該對象已經是一個字符串。其次,對於NSString對象,應該使用%@而不是%s。

注意:%@對於任何對象都適用。嘗試

NSLog(@"Array: %@", searchValues); 

相信我,值得一試。

+0

謝謝!自從幾個小時後我就開始了 – Mathieu 2009-07-29 23:10:14

2

NSString沒有「stringValue」方法,因此錯誤。

如果你真的想把值作爲一個C字符串,你想要的方法是UTF8String。不過,對於您的日誌記錄案例,您應該將%s更改爲%@,並直接記錄NSString對象。

1

沒有必要在這種情況下使用stringValue編輯:它實際上是一個錯誤,因爲其他人發佈的,因爲NSString沒有stringValue方法)。

來自字典的對象已經是NSString。你應該做的是允許NSLog函數處理對象作爲一個適當的可可對象。代碼爲%@,而不是%s,因爲%s用於C風格的字符串。

下面是它應該如何看:

self.searchValues = [[NSMutableArray alloc] init]; 
[email protected]"Bob"; 
if(self.name!=nil) 
{ 
    [searchValues addObject: [NSMutableDictionary 
      dictionaryWithObjectsAndKeys:@"Name", @"Label", 
             self.name,@"Value", 
             nil]]; 

    NSLog(@"Array value: %@", [[searchValues objectAtIndex:0] 
           objectForKey:@"Value"]); 
} 
0

如果您有屬性名稱變量,然後進行任何操作時,就可以了,否則就沒有申報財產的含義使用self.name。

相關問題