我想这是非常基本的,但我正在努力从类中获取数据(在本例中是一个简单的字符串)。
我的课很简单;它看起来像这样:
@interface myBook : NSObject {
NSString *titleName;
NSString *titleColour;
}
然后我有所有的@property和@synthesise电话。我在我的viewController中导入了这个(#import myBook.h),我想在那里将书籍添加到我的库中。所以我有这组变量来控制我的库:
NSMutableArray *myLibrary;
NSUInteger currentBookNumber;
myBook *currentBook;
和
@property (nonatomic, retain) NSMutableArray *myLibrary;
@property (nonatomic, assign) NSUInteger currentBookNumber;
@property (nonatomic, readonly) NoteBook *currentBook;
然后我按照这样设置我的库:
-(void) setupLibrary {
myBook *newBook = [[myBook alloc] init];
newBook.titleName = @"Test";
newBook.titleColour = @"orange";
[myLibrary addObject:newBook];
[myLibrary addObject:newBook];
[myLibrary addObject:newBook];
currentBookNumber = 0;
}
为了从当前的书中获取数据,我有以下方法:
-(NmyBook *) currentBook {
myBook *thisBk = [self.myLibrary
objectAtIndex:self.currentBookNumber];
return thisBk;
}
现在我的问题是,如果我想从myLibrary获取数据并在我的viewDidLoad中调用它,我将只获得标题的nil ...我哪里出错?
- (void)viewDidLoad {
[self setupLibrary];
NSLog(@"TitleName:%@", currentBook.titleName);
答案 0 :(得分:2)
我看到的问题:
1号: 我希望currentBook方法返回类型是一个错字。我看到 - (NmyBook *)......不应该是 - (myBook *)?
2号: 您从未初始化currentBook对象。在你打电话给NSLog之前,你应该去
currentBook = [self currentBook];
其中[self currentBook]调用currentBook方法并将返回的对象设置为currentBook对象。
最后,尝试对变量和方法使用相同的名称:)
希望有所帮助。
答案 1 :(得分:1)
您必须使用self.currentBook.titleName
。 currentBook.titleName
不会触发您的访问者。
顺便说一句,您的setupLibrary
正在泄露。您需要在上次[newBook release]
来电后添加[myLibrary addObject:newBook]
。
答案 2 :(得分:1)
您调用了一个属性currentBook和一个方法currentBook: 通常它可以工作,但你应该调用方法getCurrentBook;
并且有权访问他班级中的财产:
[self.theProperty method];
使用:
newBook.titleName = [NSString stringWithFormat:@"Test"];
newBook.titleColor = [NSString stringWithFormat:@"Orange"];
您可以致电:
NSLog(@"TitleName:%@", self.currentBook.titleName);