所以我对Objective-C很新,我试图扩展我从课本中制作的工作程序。
所以,我有一个工人阶级名称"项目"。这是Item.h:
@interface Item : NSObject
{
NSString *_itemName;
NSString *_serialNumber;
int _valueInDollars;
NSDate *_dateCreated;
}
+(instancetype)randomItem;
它有一些函数可以操作这些变量,以服装方式初始化它们并以格式化方式打印它们。
然后我做了一个"项目"叫"容器"。我希望它类似于" Item"但是有一个NSMUtableArray变量,它可以包含一个" Item"的数组。这是Container.h:
#import "Item.h"
@interface Container : Item
{
NSString *_containerName;
NSDate *_containerDatecreated;
int _containerValueinDollars;
NSMutableArray *_subItems;
}
+(instancetype) randomContainer;
现在在我的主要。我用" Item"做了很多事情。上课,他们工作正常。但是当我这样做时:
Container *container=[Container randomContainer];
for (NSString *item in container.containerName) {
NSLog(@"%@", item);
}
它表示" Property' containerName'没有找到类型'容器*'"的对象。但我明确地将该变量添加到了#34; Container"子类。
注意:randomContainer创建一个随机容器实例并对其进行初始化。当我在Xcode中调试它似乎工作正常。
我的问题是什么?
答案 0 :(得分:1)
container.containerName
称为点语法。它相当于[container containerName]
。但是你的类没有名为containerName
的属性或方法,所以编译器抱怨。
现在,在你正在使用的书的背景下,这可能完全令人困惑。那是因为你正在使用的书已经过时了。
如果它是最新的,您的Item类看起来更像:
@interface Item:NSObject
@property(copy) NSString *containerName;
@property(copy) NSDate *containerDateCreated;
@property(assign) NSInteger containerValueInDollars;
... etc ...
@end
在学习其他内容之前,先获取最新的教程和/或书籍。它会节省很多挫折感。