Objective c 调用时子类中未计算的数组值

Objective c 调用时子类中未计算的数组值,objective-c,Objective C,仅仅是在BNR iOS书和第2章的挑战中做一些黄金挑战就让我感到困惑 这是我的BNRContainer.m类文件,它是BNRItem的一个子类。挑战的目标是覆盖对象的描述并打印出它的一些属性。计算不正确的是BNR容器的containerValue #import "BNRContainer.h" ... -(int)containerValue{ int total = 0; for (BNRItem *item in self.subItems) {

仅仅是在BNR iOS书和第2章的挑战中做一些黄金挑战就让我感到困惑

这是我的BNRContainer.m类文件,它是BNRItem的一个子类。挑战的目标是覆盖对象的描述并打印出它的一些属性。计算不正确的是BNR容器的
containerValue

#import "BNRContainer.h"

... 

-(int)containerValue{

    int total = 0;

    for (BNRItem *item in self.subItems) {
        total += item.valueInDollars;
    }

    return total;
}

-(NSString *)description{


    NSString *descriptionstr = [NSString stringWithFormat:@"I'm a container named %@! My total value is %d and my items are %@",self.itemName, containerValue, self.subItems];
    return descriptionstr;
}
这是主要的问题。m:

#import <Foundation/Foundation.h>
#import "BNRItem.h"
#import "BNRContainer.h"

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

    @autoreleasepool {

        NSMutableArray *items = [[NSMutableArray alloc] init];

        BNRItem *item = [[BNRItem alloc] initWithItemName:@"Red Sofa" valueInDollars:100 serialNumber:@"A1B2C"];
        BNRItem *itemWithName = [[BNRItem alloc] initWithItemName:@"Blue Sofa" valueInDollars:45 serialNumber:NULL];
        BNRItem *itemWithNoName = [[BNRItem alloc]init];

        [items addObject:item];
        [items addObject:itemWithName];
        [items addObject:itemWithNoName];

        BNRContainer *container = [[BNRContainer alloc]init];

        container.itemName = @"TheMainContainer";
        container.subItems = items;

        NSLog(@"%@",container);

        items = nil;

    }
    return 0;
}

好了,就在这里。。。很好地排除了
self

NSString *descriptionstr = [NSString
                            stringWithFormat:@"I'm a container named %@! My total value is %d and my items are %@",
                            self.itemName,
                            self.containerValue, //self was missing
                            self.subItems];

通过像您那样格式化代码,可以很明显地看到。containerValue似乎是一个读/写属性。
NSString *descriptionstr = [NSString
                            stringWithFormat:@"I'm a container named %@! My total value is %d and my items are %@",
                            self.itemName,
                            self.containerValue, //self was missing
                            self.subItems];