从类中获取数据的问题

时间:2011-04-29 21:54:57

标签: iphone objective-c cocoa-touch

我想这是非常基本的,但我正在努力从类中获取数据(在本例中是一个简单的字符串)。

我的课很简单;它看起来像这样:

    @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);

3 个答案:

答案 0 :(得分:2)

我看到的问题:

1号: 我希望currentBook方法返回类型是一个错字。我看到 - (NmyBook *)......不应该是 - (myBook *)?

2号: 您从未初始化currentBook对象。在你打电话给NSLog之前,你应该去

currentBook = [self currentBook];

其中[self currentBook]调用currentBook方法并将返回的对象设置为currentBook对象。

最后,尝试对变量和方法使用相同的名称:)

希望有所帮助。

答案 1 :(得分:1)

您必须使用self.currentBook.titleNamecurrentBook.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);