2011-04-29 85 views
0

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

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

然后我有@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中调用这个,我将只得到零的称号......没我有什么错?

- (void)viewDidLoad { 

[self setupLibrary]; 
NSLog(@"TitleName:%@", currentBook.titleName); 
+0

答案有帮助吗?请选择正确的答案...如果不是,请评论让我们知道它没有帮助。 :) – Sid 2011-05-19 07:48:40

回答

2

问题我见:

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

编号2: 您从未初始化当前对象。在您致电NSLog之前,您应该去

currentBook = [self currentBook]; 

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

最后,尽量不要使用变量和方法的名称:)

希望有所帮助。

1

您必须使用self.currentBook.titleNamecurrentBook.titleName不会触发您的访问者。

顺便说一句,您的setupLibrary泄漏。您需要在最后的[myLibrary addObject:newBook]呼叫后添加[newBook release]

1

您曾调用过一个属性currentBook和一个方法currentBook: 通常它可以工作,但您应该调用方法getCurrentBook;

,并获得在班上的地产是使用:

[self.theProperty method]; 

用途:

newBook.titleName = [NSString stringWithFormat:@"Test"]; 
newBook.titleColor = [NSString stringWithFormat:@"Orange"]; 

后,您可以拨打:

NSLog(@"TitleName:%@", self.currentBook.titleName);