2009-07-29 89 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。

相关问题