繁体   English   中英

遍历数组时崩溃

[英]Crash iterating through an array

我试图简单地打印出数组的内容。

//initialization, ...

    NSArray *stockprices = [NSArray arrayWithObjects:@[stock1,stock2,stock3], nil];

    for (BNRStockHolding *stock in stockprices) {
//            says that there are 3 objects in stock and crashes.
//            tried to check -> isMemberOfClass:BNRStockHolding in an if before and got 'unexpected interface name'.
        NSLog(@"Purchase Price: %.02f \n Shares: %d \n Current Price: %.02f \n \n \n \n", [stock purchasePrice], [stock numberOfShares],[stock currentSharePrice]);

当您这样做时:

NSArray *stockprices = [NSArray arrayWithObjects:@[stock1, stock2, stock3], nil];
//is same as
NSArray *stockprices = [NSArray arrayWithObjects:[NSArray arrayWithObjects:stock1, stock2, stock3, nil], nil];
//or
NSArray *stockprices = [NSArray arrayWithObjects:[[NSArray alloc] initWithObjects:stock1, stock2, stock3, nil], nil];

因此,您基本上是在创建一个数组,其第0个元素是数组,因为@[stock1,stock2,stock3]本身会创建一个数组。


而是:

NSArray *stockprices = [NSArray arrayWithObjects:stock1, stock2, stock3, nil];

要么

NSArray *stockprices = @[stock1,stock2,stock3];

您将在此处使用代码创建一个数组数组:

 NSArray *stockprices = [NSArray arrayWithObjects:@[stock1,stock2,stock3], nil];

您可以简单地写:

NSArray *stockprices = @[stock1,stock2,stock3];

您正在数组中使用数组; 父数组有一个对象,子数组有三个库存对象。 如果您将获得[parentArray objectAtIndex:0]; 它将正常工作; 但是,如果您要执行[parentArray objectAtIndex:1]; 应用会崩溃,因为父数组只有一个对象。 它可以帮助您调查问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM