Cocoa touch 有人能解释一下为什么iOS 4.2会不断崩溃吗?

Cocoa touch 有人能解释一下为什么iOS 4.2会不断崩溃吗?,cocoa-touch,ios4,gdb,ipad,Cocoa Touch,Ios4,Gdb,Ipad,该代码在iOS 3.2中运行,在4.2中不断崩溃 这是它崩溃的原因 NSArray* address = [NSArray arrayWithArray:[[[access.filteredResults objectAtIndex:[indexPath row]] addressArray] objectAtIndex:0]]; 您需要新的iOS CookBook代码,乍一看,这一行是您的问题: [NSArray initWithArray:range:copyItems:] 乍一看,您可

该代码在iOS 3.2中运行,在4.2中不断崩溃

这是它崩溃的原因

NSArray* address = [NSArray arrayWithArray:[[[access.filteredResults objectAtIndex:[indexPath row]] addressArray] objectAtIndex:0]];

您需要新的iOS CookBook代码,乍一看,这一行是您的问题:

[NSArray initWithArray:range:copyItems:]
乍一看,您可能需要的是indexPath.row而不是[indexPath row]

由于iOS 4.2仍在保密协议下,我们不能谈论4.2特定的代码。 但是,我们可以讨论4.1和以前的版本

首先,在登录iOS开发中心后,您将进入4.2差异页面。这将告诉您该版本中发生了什么变化。由于这些页面仅显示版本间的差异,请查看3.2-4.0差异、4.0-4.1差异和4.1-4.2差异。您正在寻找UITableView或NSArray的API中的更改,这里显然不能讨论这些更改

第二,您将下载WWDC'10关于崩溃报告的课程。这有点乏味,但花一个小时学习如何阅读撞车报告是值得的


希望这有帮助

收到的错误告诉您选择器getObjects:range:正在发送到一个uu NSCFDictionary。因此,明确地说:

[[[access.filteredResults objectAtIndex:[indexPath row]] addressArray] objectAtIndex:0]
。。。用于返回NSArray,但现在正在返回NSDictionary

我不知道什么是访问权限,所以除了您可以将您引用的错误源行更改为:

NSDictionary* address = [NSDictionary dictionaryWithDictionary:[[[access.filteredResults objectAtIndex:[indexPath row]] addressArray] objectAtIndex:0]];
一旦您这样做了,接下来使用address的任何代码显然也需要更改,以处理您不再访问数组的事实

NSDictionary* address = [NSDictionary dictionaryWithDictionary:[[[access.filteredResults objectAtIndex:[indexPath row]] addressArray] objectAtIndex:0]];