2011-04-29 92 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);