2012-07-21 44 views
0

上午試圖從核心數據填充我的表,並在該行利用核心數據數組

Tips *tipy = [arr objectAtIndex:indexPath.row]; 

這裏給出一個錯誤是我.m文件填充表視圖

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 

    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 

    return [arr count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[ UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
    } 
    Tips *tipy = [arr objectAtIndex:indexPath.row]; 
    cell.textLabel.text = [tipy tipdescription]; 
    cell.detailTextLabel.text = [tipy.tipnumber stringValue]; 

    return cell; 
} 

應用程序和ARR在.h文件中聲明,並在.m文件

@property (nonatomic, retain) AppDelegate *app; 
@property(nonatomic, assign) NSArray *arr; 
+3

你有什麼錯誤?你是否在你的文件中「#import tips」?你是否合成了這個屬性?如果是這樣,你shoukd寫「self.arr」而不是arr – moxy 2012-07-21 09:36:58

回答

0

只是猜測合成,因爲沒有足夠的代碼檢查,但NSManagedObjectContextexecuteFetchRequest:error:不會返回自動釋放NSArray和你的財產arr被定義爲assign,不strong/retain =>您NSArray被釋放並arr點垃圾。也許這是原因,但正如我所說的,沒有足夠的代碼可以確定。

5

正如moxy所說,你應該寫self.arr而不是arr。您已設置@property(nonatomic, assaign) NSArray *arr;您是否合成了這些屬性?一定要這樣做。並嘗試@property(nonatomic, retain) NSArray *arr;而不是@property(nonatomic, assaign) NSArray *arr;。 assaign不會增加保留計數,因此有可能會自動釋放該值。不要忘記在dealloc中釋放arr以避免內存泄漏。

+0

非常感謝。問題是因爲我沒有使用保留在我的數組 – 2012-07-21 13:39:04

+1

如果這個答案幫助你,接受它。你應該接受根據[Stackoverflow FAQ](http://stackoverflow.com/faq/#howtoask) – Shabib 2012-07-21 14:41:14