Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ios将nsmutabledictionary中的字符串与字符串进行比较时出现以下错误:“NSInvalidArgumentException”_Ios_Nsstring - Fatal编程技术网

ios将nsmutabledictionary中的字符串与字符串进行比较时出现以下错误:“NSInvalidArgumentException”

ios将nsmutabledictionary中的字符串与字符串进行比较时出现以下错误:“NSInvalidArgumentException”,ios,nsstring,Ios,Nsstring,我有一行代码,试图将NSMutableDictionary中的字符串与字符串进行比较: if ([[[myDictionary valueForKeyPath:@"time"] stringValue] isEqualToString:@"hours"]) 但我得到了一个错误: *由于未捕获异常“NSInvalidArgumentException”而终止应用程序,原因:'-[\u NSCFConstantString stringValue]:无法识别的选择器发送到实例0x3a4849a

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

if ([[[myDictionary valueForKeyPath:@"time"] stringValue]  isEqualToString:@"hours"]) 
但我得到了一个错误:

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

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

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

__NSCFConstantString
你们中有人知道为什么或者如何解决这个问题吗

我非常感谢你的帮助

[myDictionary valueForKeyPath:@"time"]
它已经是一个字符串。无需调用-stringValue将其转换为字符串。 你为什么这么做? 您不应该使用-valueForKeyPath,而应该这样编写它:

if ([[myDictionary objectForKey:@"time"] isEqualToString:@"hours"]) 
NSString没有stringValue方法。您可能已经看到过这种将字典中的NSNumber转换为字符串的方法

似乎您真正想做的是:

if ([myDictionary[@"time"] isEqualToString:@"hours"]) {
    ...

不是一个字符串。是字典中的字符串。@Vin您的意思是应该使用objectForKey:而不是valueForKey:。因为您已经有一个字符串NSString,所以不要对其调用stringValue。你真的想使用valueForKeyPath:而不是objectForKey:?不能假设它是一个NSString,但在本例中,它似乎是。