【问题标题】:Getting breakpoint/crash when trying to convert array尝试转换数组时出现断点/崩溃
【发布时间】:2014-12-23 08:25:18
【问题描述】:

在线获取断点/崩溃

if ([[status objectAtIndex:i] isEqualToString:(@"VM running")])

不知道为什么,也许我做错了?

NSMutableArray *status = [dictValue valueForKeyPath:@"VM_LIST.SERVER_STATUS_MSG"];
                     NSLog(@"%@", status);
                     int i = 0;
                     NSLog(@"%@", [status objectAtIndex:i]);
                     while (i <= [status count])
                     {
                         if ([[status objectAtIndex:i] isEqualToString:(@"VM running")])
                             {
                                 [statuses addObject:@"check.png"];
                             }
                         else
                             [statuses addObject:@"x.png"];
                         i++;
                     }

NSLog 的状态是:

(
    "VM running",
    "VM running",
    "VM running"
)

【问题讨论】:

  • 添加异常断点。进入“Breakpoint Navigator”,点击左下角的“+”,选择“Add Exception Breakpoint”。运行应用程序以获取断点。当您点击异常断点单击调试继续几次时,您将获得回溯和更多错误信息。发布它和 Xcode/Debugger 消息的精确副本。
  • 将NSLog(@"%@", [status objectAtIndex:i]); 移动到循环内部并将结果添加到问题中。
  • 什么“断点/崩溃”???消息是什么???
  • 虽然可以猜到这是关于索引越界的问题:while (i &lt;= [status count]) -- 你觉得这有什么问题吗??
  • (如果您真的查看异常消息,您就会立即知道问题所在。)

标签: ios arrays converter breakpoints


【解决方案1】:

我注意到一些奇怪的事情:

if ([[status objectAtIndex:i] isEqualToString:(@"VM running")])

不应该没有()的:

if ([[status objectAtIndex:i] isEqualToString:@"VM running"])

这似乎需要太多(超出范围):

while (i <= [status count])

我认为应该是:

while (i < [status count])

或者更好,只是最安全的方式:

for (NSString *statusString in status) {
    if ([statusString isEqualToString:@"VM running"]) {

【讨论】:

  • NSLog(@"%@", statuses);给null。这是为什么?我没有正确地做 addobject 吗?
  • 我使用了旧代码中的 for 循环和 addobject 命令
  • 糟糕忘了状态 = [[NSMutableArray alloc]init]; , 没关系。非常感谢!
猜你喜欢
  • 2012-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-19
  • 1970-01-01
  • 2023-03-06
相关资源
最近更新 更多