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 ファイルで宣言され、.m ファイルでも合成されます

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

2 に答える 2

5

モクシーが言ったように、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チェックするのに十分なコードがないため、推測するだけですが、executeFetchRequest:error:は autoreleasedNSArrayを返し、プロパティは/ではなくarrとして定義されています => あなたは解放され、ゴミ箱を指しています。これが原因かもしれませんが、私が言ったように、確認するのに十分なコードがありません。assignstrongretainNSArrayarr

于 2012-07-21T10:01:07.180 に答える