我尝试从核心数据中填充表格,并在此行显示错误
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文件中声明,并在.m文件中合成
@property (nonatomic, retain) AppDelegate *app;
@property(nonatomic, assign) NSArray *arr;
答案 0 :(得分:5)
正如moxy所说,你应该写self.arr
而不是arr
。您已设置@property(nonatomic, assaign) NSArray *arr;
您是否合成了这些属性?一定要这样做。并尝试@property(nonatomic, retain) NSArray *arr;
而不是@property(nonatomic, assaign) NSArray *arr;
。该组合不会增加保留计数,因此该值有可能被自动释放。不要忘记在dealloc中释放arr以避免内存泄漏。
答案 1 :(得分:0)
只是猜测,因为没有足够的代码可以检查,但NSManagedObjectContext
的{{1}}确实会返回自动释放的executeFetchRequest:error:
,而您的属性NSArray
被定义为arr
},而不是assign
/ strong
=>您的retain
已被释放且NSArray
指向垃圾箱。也许这就是原因,但正如我所说,没有足够的代码可以确定。