-3

我有这行代码,我试图将 nsmutabledictinary 中的字符串与字符串进行比较:

if ([[[myDictionary valueForKeyPath:@"time"] stringValue]  isEqualToString:@"hours"]) 

但我收到此错误:

*由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[__NSCFConstantString stringValue]:无法识别的选择器发送到实例 0x3a4849a4”

我检查字典容器的类类型:

NSLog(@"%@'", NSStringFromClass([[myDictionary valueForKeyPath:@"time"]  class]));

这是输出:

__NSCFConstantString

你们中的任何人都知道为什么或如何解决这个问题?

我会非常感谢你的帮助。

4

2 回答 2

2
[myDictionary valueForKeyPath:@"time"]

它已经是一个NSString. 无需调用-stringValue即可将其转换为字符串。你为什么这样做?而不是使用-valueForKeyPath,你应该这样写:

if ([[myDictionary objectForKey:@"time"] isEqualToString:@"hours"]) 
于 2013-07-03T17:12:39.693 回答
0

NSString 没有stringValue方法。您可能已经看到这种用于将字典中的 NSNumber 转换为字符串的方法。

您真正想要做的似乎是:

if ([myDictionary[@"time"] isEqualToString:@"hours"]) {
    ...
于 2013-07-03T19:31:22.280 回答