【问题标题】:NSMutableArray to NSDictionary iOS 3.1.3 problemNSMutableArray 到 NSDictionary iOS 3.1.3 问题
【发布时间】:2011-04-08 18:21:07
【问题描述】:

当我尝试在 iOS 3.1.3 上运行我的应用程序时遇到问题 我在 4.1 中运行我的应用程序并没有问题,但是在 3.1.3 中我的应用程序崩溃了。 我的应用程序在这一行崩溃:

NSDictionary *atm= (NSDictionary *)[atmData objectAtIndex:0];

这是我的一段代码:

DataHelper *mydata = [[DataHelper alloc] init];
NSMutableArray *atmData = [mydata getAllAtmByLocation:appDelegate.userLocation];    
if(atmData != nil){
   NSDictionary *atm= (NSDictionary *)[atmData objectAtIndex:0];
   //...
}

就像我说的,这个问题只发生在 iOS 3.1.3 上,在 4.1 中它可以完美运行。 谢谢你的帮助!!

【问题讨论】:

  • 我看不到它,因为不知道为什么,但 xCode 不允许我调试应用程序,它会在我的 iPhone 上安装它,然后我运行它,但无法调试它。
  • 请发布错误详细信息,例如控制台输出。可能是因为 3.1.3 不支持您调用的某些 API,因此您的数据在该版本上只是 nil。您正在访问数组而不检查它是否有元素,这样如果它为空就会导致崩溃。
  • 崩溃时向控制台输出什么?在尝试从中获取元素之前,您应该检查您的数组是否为空。
  • @Felipe:如果您使用的是 Xcode 3.x,请检查管理器、您的设备、控制台。
  • 控制台的内容也可以在Xcode Organizer中看到。尝试从菜单中运行 -> 调试以从 Xcode 调试您的应用程序。

标签: iphone ios nsmutablearray nsdictionary


【解决方案1】:

我猜你得到了一个下标超出范围的错误。 getAllAtmByLocation: 是否有可能返回一个空数组?您可以将条件更改为:

if (atmData != nil && [atmData count] > 0) { ... }

【讨论】:

  • 是的! Thx dde ​​解决了我的问题。但是为什么这只发生在 3.1.3 中呢?
【解决方案2】:

检查您的[atmData count] 并确保该数组实际上包含一个元素。也许 3.1.3 不支持您用来填充数组的任何内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多