[英]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.