繁体   English   中英

设置在记录数组数据时要调用的类标识符

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

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