[英]Setting up a class identifier to be called when logging array data
嘿stackOverflow社区。 我正在研究Big Nerd Ranch的Objective C书籍,并且遇到了有关定义和设置类的有趣章节(如果您熟悉的话,请参阅第17章)。 在挑战中,我们编写了一个程序,其中定义了具有几个属性和实例变量的股票类。 我已经能够按照要求运行程序,但我想对其进行一些修改,使其也可以将NSLog命名为stockName,以便我可以查看与其属性关联的股票。
基本上,有一种方法可以使此块的代码更简洁:
NSString *appleName = @"AppleInc";
[Apple setStockIdentifier:appleName];
也许更像这样:
[Apple setStockIdentifier:"AppleInc"];
我尝试将属性设置为类文件中的char,但无法使其正常工作。 这是我的新手,但我认为为stockIdentifier值声明新的NSString是不需要的额外代码。 任何反馈将不胜感激。
以下是主文件的内容:
#import <Foundation/Foundation.h>
#import "StockHolding.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
StockHolding *Apple = [[StockHolding alloc] init];
NSString *appleName = @"AppleInc";
[Apple setStockIdentifier:appleName];
[Apple setPurchaseSharePrice:2.30];
[Apple setCurrentSharePrice:4.50];
[Apple setNumberOfShares:40];
StockHolding *HomeDepot = [[StockHolding alloc] init];
NSString *homeDepotName = @"Home Depot Inc";
[HomeDepot setStockIdentifier:homeDepotName];
[HomeDepot setPurchaseSharePrice:12.19];
[HomeDepot setCurrentSharePrice:10.56];
[HomeDepot setNumberOfShares:90];
StockHolding *Cisco = [[StockHolding alloc] init];
NSString *ciscoName = @"Cisco Inc";
[Cisco setStockIdentifier:ciscoName];
[Cisco setPurchaseSharePrice:45.10];
[Cisco setCurrentSharePrice:49.51];
[Cisco setNumberOfShares:210];
NSMutableArray *listOfStocks = [NSMutableArray arrayWithObjects:Apple, HomeDepot, Cisco, nil];
for (StockHolding *currentStock in listOfStocks) {
NSLog(@"%@, Purchase Share Price: %.2f; Current value: %.2f; Number of shares: %i",[currentStock stockIdentifier],[currentStock purchaseSharePrice], [currentStock currentSharePrice], [currentStock numberOfShares]);
}
}
return 0;
}
以下是StockHolding.h的内容:
#import <Foundation/Foundation.h>
@interface StockHolding : NSObject
{
//char stockIdentifier;
float purchaseSharePrice;
float currentSharePrice;
int numberOfShares;
}
@property NSString *stockIdentifier;
@property float purchaseSharePrice;
@property float currentSharePrice;
@property int numberOfShares;
-(float) costInDollars; //purchaseSharePrice * numberOfShares;
-(float) valueInDollars; //currentSharePrice * numberOfShares;
@end
这是StockHolding.m:
#import "StockHolding.h"
@implementation StockHolding
@synthesize currentSharePrice, purchaseSharePrice, numberOfShares, stockIdentifier;
-(float)costInDollars;
{
return (purchaseSharePrice * numberOfShares);
}
-(float)valueInDollars;
{
return (currentSharePrice * numberOfShares);
}
@end
这只是语法错误。
[Apple setStockIdentifier:"AppleInc"];
应该...
[Apple setStockIdentifier:@"AppleInc"];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.