Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 大书呆子牧场目标C第17章挑战-定义课程_Objective C_Compiler Errors_Nsobject_Fast Enumeration - Fatal编程技术网

Objective c 大书呆子牧场目标C第17章挑战-定义课程

Objective c 大书呆子牧场目标C第17章挑战-定义课程,objective-c,compiler-errors,nsobject,fast-enumeration,Objective C,Compiler Errors,Nsobject,Fast Enumeration,我在上课时遇到困难。我必须创建作为NSObject子类的“StockHolding”对象。我创建实例变量和方法。然后,我创建了3次股票持有的迭代,包括名称和价格,并将它们加载到一个可变数组中。我很难快速枚举数组中的对象并打印每个对象的属性(价格)。问题是我在尝试枚举对象并打印属性时出错。我尝试了几种不同的方法来解决这个问题,但都没有成功。有什么想法吗?我还注意到currentStock并没有打印名称,而是打印指针位置。也许这些问题是相关的。提前谢谢 “标题” #import <Founda

我在上课时遇到困难。我必须创建作为NSObject子类的“StockHolding”对象。我创建实例变量和方法。然后,我创建了3次股票持有的迭代,包括名称和价格,并将它们加载到一个可变数组中。我很难快速枚举数组中的对象并打印每个对象的属性(价格)。问题是我在尝试枚举对象并打印属性时出错。我尝试了几种不同的方法来解决这个问题,但都没有成功。有什么想法吗?我还注意到currentStock并没有打印名称,而是打印指针位置。也许这些问题是相关的。提前谢谢

“标题”

#import <Foundation/Foundation.h>

@interface StockHolding : NSObject
{
    float fPurchaseSharePrice; 
    float fCurrentSharePrice; 
    int iNumberOfShares;
}

@property float fPurchaseSharePrice;
@property float fCurrentSharePrice;
@property int iNumberOfShares;

-(float) fCostInDollars; //fPurchaseSharePrice * fNumberOfShares
-(float) fValueInDollars; //fCurrentSharePrice * fNumberOfShares

@end

“主要的”

 int main(int argc, const char * argv[])
{

@autoreleasepool {
    StockHolding *Apple = [[StockHolding alloc] init];
    [Apple setFPurchaseSharePrice:225];
    [Apple setFCurrentSharePrice:300];
    [Apple setINumberOfShares:50];

    StockHolding *Cisco = [[StockHolding alloc] init];
    [Cisco setFPurchaseSharePrice:100];
    [Cisco setFCurrentSharePrice:50];
    [Cisco setINumberOfShares:75];

    StockHolding *WalMart = [[StockHolding alloc] init];
    [WalMart setFPurchaseSharePrice:75];
    [WalMart setFCurrentSharePrice:150];
    [WalMart setINumberOfShares:75];

    NSMutableArray *Portfolio = [NSArray arrayWithObjects: Apple, Cisco, WalMart, nil];

    for (NSObject *currentStock in Portfolio){   
        NSLog(@"Purchase Price: %@", currentStock );
        NSLog(@"Details: %f", [currentStock FPurchaseSharePrice]);  //  <---Error is on this line.  It says "No visible @interface for NSObject declares the selector fPurchaseSharePrice"
    }

}
return 0;
}
int main(int argc,const char*argv[]
{
@自动释放池{
持股*苹果=[[StockHolding alloc]init];
[苹果设置采购共享价格:225];
[苹果setFCurrentSharePrice:300];
[Apple setINumberOfShares:50];
股票持有*Cisco=[[StockHolding alloc]init];
[Cisco setFPurchaseSharePrice:100];
[Cisco setFCurrentSharePrice:50];
[Cisco setINumberOfShares:75];
库存*沃尔玛=[[StockHolding alloc]init];
[WalMart setFPurchaseSharePrice:75];
[沃尔玛setFCurrentSharePrice:150];
[沃尔玛setINumberOfShares:75];
NSMutableArray*Portfolio=[NSArray arrayWithObjects:苹果、思科、沃尔玛、无];
对于(NSObject*currentStock in Portfolio){
NSLog(@“购买价格:%@”,当前库存);

NSLog(@“详细信息:%f”,[currentStock FPurchaseSharePrice]);//在您的NSLog中:
FPurchaseSharePrice
应该是
FPurchaseSharePrice

此外,如果覆盖-(NSString*)description,则打印对象将生成该字符串,而不是您当前看到的该对象的指针

- (NSString *)description
{
    return [NSString stringWithFormat:@"StockHolding: %.2f, %.2f", self.fCostInDollars, self.fValueInDollars];
}
收益率:

Purchase Price: StockHolding: 11250.00, 15000.00
而不是:

Purchase Price: <StockHolding: 0x7fe438c0a480>

“可能不响应”错误将消失。

而是为for循环执行此操作

for (StockHolding *currentStock in Portfolio){   
    NSLog(@"Purchase Price: %@", currentStock );
    NSLog(@"Details: %f", [currentStock fPurchaseSharePrice]);  //  <---Error is on this line.  It says "No visible @interface for NSObject declares the selector fPurchaseSharePrice"
}
用于(股票持有*投资组合中的当前股票){
NSLog(@“购买价格:%@”,当前库存);

NSLog(@“Details:%f”,[currentStock fPurchaseSharePrice]);//就像它说的:你没有一个同名的方法。方法名在Objective-C中区分大小写,并且你将属性(和相应的访问器)声明为
fPurchaseSharePrice
。你想使用这个:

NSLog(@"Details: %f", [currentStock fPurchaseSharePrice]);

资本化很重要。也可以尝试使用
for代替(NSObject*
for(StockHolding*
如果你的对象是正确的类类型,你将得到自动完成。实际上,子类化对象的目的是去普通的超级对象,而不是直接去NSObject,NSObject是每个类的超级类。查看给出的响应标记,因为它在回答中呈现了相同的场景。我赞同这个响应它在for循环中表示正确的对象超类,因此具有所有正确的方法和属性访问器。
for (StockHolding *currentStock in Portfolio){   
    NSLog(@"Purchase Price: %@", currentStock );
    NSLog(@"Details: %f", [currentStock fPurchaseSharePrice]);  //  <---Error is on this line.  It says "No visible @interface for NSObject declares the selector fPurchaseSharePrice"
}
NSLog(@"Details: %f", [currentStock fPurchaseSharePrice]);