如何打印对象数组?目标C.

时间:2013-12-31 12:59:08

标签: objective-c

我有Stockholging类,它创建了属性和方法costInDollars& valueInDollars ..我需要创建每个库存的实例,将每个对象添加到数组中,然后使用快速枚举打印它。

//每个股票的实例化和创建

    StockHolding *o1 = [[StockHolding alloc]init];
    StockHolding *o2 = [[StockHolding alloc]init];
    StockHolding *o3 = [[StockHolding alloc]init];

//设置值,并为每个对象调用方法costInDollars和valueInDollars

    [o1 setPurchaseSharePrice:2.30];
    [o1 setCurrentSharePrice:4.50];
    [o1 setNumberOfShares:40];
    [o1 costInDollars];
    [o1 valueInDollars];

    [o2 setPurchaseSharePrice:12.10];
    [o2 setCurrentSharePrice:10.58];
    [o2 setNumberOfShares:30];
    [o2 costInDollars];
    [o2 valueInDollars];

    [o3 setPurchaseSharePrice:45.10];
    [o3 setCurrentSharePrice:49.51];
    [o3 setNumberOfShares:210];
    [o3 costInDollars];
    [o3 valueInDollars];

//创建一个数组并将对象添加到数组

    NSMutableArray *bolsa = [[NSMutableArray alloc]init];
    [bolsa addObject:o1];
    [bolsa addObject:o2];
    [bolsa addObject:o3];

2 个答案:

答案 0 :(得分:2)

在您的课程中,您需要为说明选择器提供方法。这将返回您的类内容的NSString *,格式如您所愿。

例如:

-(NSString*)description
{
   NSString* str1 = [NSString stringWithFormat:@"Purchase Share Price = %f",currentSharePrice];
   NSString* str2 = [NSString stringWithFormat:@"Current Share Price = %f",currentSharePrice];
   ... // do the rest of the items
   NSArray* strings =[NSArray arrayWithObjects:str1,str2,<the rest of them>, nil]
   NSString* result = [strings componentsJoinedByString:@"\n"];
   return result;
}

然后:

NSLog("%@",bolsa);

注意:无论何时需要在objective-c中调试/记录对象,这都是一种很好的方法...有一种方法可以将复杂对象转换为简单的表示(即字符串)很有帮助。编码技能不仅仅是了解功能和模板......还有技术和工具。

答案 1 :(得分:1)

在StockHolding类中实现该方法:

- (NSString*) description

比使用:

NSLog(@"%@", bolsa);

它会遍历数组并从上面的方法中为这个数组中的每个对象打印字符串。