Search code examples
objective-cnslog

Objective-C error missing value


Here is simple code. It's working but missing one value. I posted the code. Please help me.

#import <Foundation/Foundation.h>

@interface StockHolding : NSObject
{
    //declear 3 instance varriable
    float purchaseSharePrice;
    float currentSharePrice;
    int numberOfShares;
}


@property float purchaseSahrePrice;
@property float currentSharePrice;
@property int numberOfShares;

-(float)costInDollars;
-(float)valueInDollars;

@end

Here is dot m file

#import "StockHolding.h"

@implementation StockHolding
@synthesize currentSharePrice,purchaseSahrePrice;
@synthesize numberOfShares;


-(float)valueInDollars
{
    return currentSharePrice *numberOfShares;
}



-(float)costInDollars
{
    return purchaseSharePrice *numberOfShares;
}

@end

Here is main file

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

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

    @autoreleasepool {

        StockHolding *yahoo = [[StockHolding alloc] init];
        StockHolding *google =[[StockHolding alloc] init];
        StockHolding *apple = [[StockHolding alloc] init];
        //NSMutableArray *stockList = [NSMutableArray array];

        [yahoo setPurchaseSahrePrice:4.50];
        [yahoo setCurrentSharePrice:2.30];
        [yahoo setNumberOfShares:40];
      //  [stockList addObject:yahoo];

        [google setPurchaseSahrePrice:12.19];
        [google setCurrentSharePrice:10.56];
        [google setNumberOfShares:90 ];
      //  [stockList addObject:google];


        [apple setPurchaseSahrePrice:45.51];
        [apple setCurrentSharePrice:49.51];
        [apple setNumberOfShares:210];
       // [stockList addObject:apple];

        // using an array with objects
        NSMutableArray *stockList = [NSMutableArray arrayWithObjects:yahoo,google,apple, nil];


        //call the methods
        for(StockHolding *n in stockList)
        {
            //Call the methods 
            float cost = [n costInDollars];
            float value = [n valueInDollars];
            NSLog(@"Bought stock for $%.2f, It is now at $%.2f, I have %d shares, They cost me $%.2f, Now they are worth $%.2f",
                  [n purchaseSahrePrice],[n currentSharePrice],[n numberOfShares],cost,value);
        }


    }
    return 0;
}

Here is the problem this code is running but missing one value which is cost.

Thanks

Ben.

Regards.

2012-03-06 20:42:59.160 Stocks[1761:707] Bought stock for $4.50, It is now at $2.30, I have 40 shares, They cost me $0.00, Now they are worth $92.00
2012-03-06 20:42:59.162 Stocks[1761:707] Bought stock for $12.19, It is now at $10.56, I have 90 shares, They cost me $0.00, Now they are worth $950.40
2012-03-06 20:42:59.163 Stocks[1761:707] Bought stock for $45.51, It is now at $49.51, I have 210 shares, They cost me $0.00, Now they are worth $10397.10

Solution

  • Seems like a typo:

    You call the property setter which is called purchaseSahrePrice: [apple setPurchaseSahrePrice:45.51];

    But in the method to get the cost you use the instance variable called purchaseSharePrice. The property should just be renamed to purchaseSharePrice and it should work.