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;
}

app 和 arr 在 .h 文件中声明为 as 并且也在 .m 文件中合成

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

2 回答 2

5

正如moxy所说,你应该写self.arr而不是arr. 你已经设置@property(nonatomic, assaign) NSArray *arr;了你合成了那些属性吗?一定要这样做。并尝试@property(nonatomic, retain) NSArray *arr;而不是@property(nonatomic, assaign) NSArray *arr;. 分配不会增加保留计数,因此该值有可能被自动释放。不要忘记释放 dealloc 中的 arr 以避免内存泄漏。

于 2012-07-21T10:05:01.580 回答
0

只是猜测,因为没有足够的代码来检查,但是NSManagedObjectContext'sexecuteFetchRequest:error:确实返回 autoreleasedNSArray并且您的属性arr被定义为assign,而不是strong/ retain=> 您NSArray已释放并arr指向垃圾箱。也许这就是原因,但正如我所说,没有足够的代码可以确定。

于 2012-07-21T10:01:07.180 回答