2012-12-13 3 views
0

내가 만든 3 개의 클래스 인스턴스로 NSMutableArray를 채 웠습니다. 이제이 배열을 반복하여 변수 값을 얻고 싶습니다. 그렇게 할 수는 있지만 인스턴스 이름 (빵, 물, ...)을 인쇄 할 수 없습니다. 대신 자신의 주소를 얻습니다. 나는 그것을 간단하지만 조금 사투를 벌인거야, 그래서 누군가가 방법을 알고 있다면 ... 당신에게 감사 추측ObjC : NSLog 포인터 이름

#import <Foundation/Foundation.h> 
#import "StockHolding.h"; 

int main (int argc, const char * argv[]) { 
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 

StockHolding *bread = [[StockHolding alloc] init]; 
[bread setPurchaseSharePrice:100]; 
[bread setCurrentSharePrice:120]; 
[bread setNumberOfShares:100]; 

StockHolding *water = [[StockHolding alloc] init]; 
[water setPurchaseSharePrice:100]; 
[water setCurrentSharePrice:80]; 
[water setNumberOfShares:10]; 

StockHolding *tomatoes = [[StockHolding alloc] init]; 
[tomatoes setPurchaseSharePrice:100]; 
[tomatoes setCurrentSharePrice:50]; 
[tomatoes setNumberOfShares:1]; 

NSMutableArray *myStock = [NSMutableArray arrayWithObjects:bread, water, tomatoes, nil]; 

for (StockHolding *s in myStock) 
{ 
    NSLog(@"Here is what I paid for my %p : %f", s, [s costInDollars]); 
    NSLog(@"Here is what I earn for my %p : %f", s, [s valueInDollars]); 

} 

[pool drain]; 
return 0; 

}

+0

매크로 당신의 전처리이 #DEFINE을 추가 할 수 있습니다 포인터 이름의 경우. 그것을 문자열로 인쇄하려고합니다. – Girish

답변

1

가 왜 주식 보유 클래스에 -(NSString *)description 방법을 구현하지? 그런 다음 %@을 문자열 형식으로 사용할 수 있으며 거기에 설명이 출력됩니다.

또는 %@을 사용하여 StockHolding 인스턴스의 다른 문자열 속성을 출력 할 수도 있습니다.

0

당신은 객체를 NSLog 싶은 당신이 costInDollars & valueInDollars의 데이터 유형이 무엇인지 #define OLog(x) NSLog(@"%s = %@",#x, x);