【问题标题】:NSDictionary Strange Behaviour with NSString keyNSDictionary 带有 NSString 键的奇怪行为
【发布时间】:2014-04-16 04:00:26
【问题描述】:
NSString *downloadedItemIDString = [dict objectForKey:@"id"];
NSLog(@"downloadedItemIDString = %@", downloadedItemIDString);

if([storedRecordsDict objectForKey:downloadedItemIDString] != nil)
      NSLog(@"1) Item WITH ID %@ EXISTS!", downloadedItemIDString);
if([storedRecordsDict objectForKey:@"6226691114401792"] != nil)
      NSLog(@"2) Item WITH ID 6226691114401792 EXISTS!");

日志:

2014-04-15 20:51:37.336 AppDemo[2201:60b] 已下载ItemIDString = 6226691114401792
2014-04-15 20:51:37.337 AppDemo[2201:60b] 2) ID 为 6226691114401792 的项目存在!

我是 Obj C 的新手,我已经尝试解决这个问题好几个小时了。请帮助我理解为什么在提供 NSString 作为键时它找不到对象?

【问题讨论】:

  • id 值上可能有一些空格。在日志语句中添加引号以确保:NSLog(@"downloadedItemIDString = '%@'", downloadedItemIDString); 并查看是否出现任何空格。
  • 2014-04-15 21:05:19.314 AppDemo[2232:60b] 已下载ItemIDString = '6226691114401792' 2014-04-15 21:05:19.315 AppDemo[2232:60b] 2) 带有 ID 的项目'6226691114401792' 存在!
  • 我已经添加了 '' 但仍然很神秘.. :/
  • 再测试:添加如下日志:NSLog(@"downloadedItemIDString class = %@", [downloadedItemIDString class]);.
  • downloadedItemIDString 可能不是 NSString 而是 NSNumber。

标签: ios objective-c nsstring nsdictionary


【解决方案1】:
NSString *downloadedItemIDString = [dict objectForKey:@"id"];
NSLog(@"downloadedItemIDString = %@", downloadedItemIDString);
if([downloadedItemIDString isEqualToString:@"6226691114401792"])
{
    if([storedRecordsDict objectForKey:downloadedItemIDString] != nil)
        NSLog(@"1) Item WITH ID %@ EXISTS!", downloadedItemIDString);
if([storedRecordsDict objectForKey:@"6226691114401792"] != nil)
    NSLog(@"2) Item WITH ID 6226691114401792 EXISTS!");
}

首先检查您下载的ItemIDString 是否等于@"6226691114401792" 然后两个if 条件都会执行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 2011-08-07
    • 1970-01-01
    相关资源
    最近更新 更多