0

という属性を設定したテーブルがありますname。同じものの名前が複数存在する可能性があるため、最初のテーブルは name の個別の値を取得します。次のテーブル ビューは、この特定の値の重複を開きます。

ただし、私が抱えている問題は、重複から取得された情報が最新の付属属性からのみ取得されることです。したがって、それらはすべて同じ情報を指しています。

テーブルに配置するオブジェクトを取得するメソッドを次に示します。

AppDelegate.m

- (NSArray *)allLikePlaces:(id)place {

    NSManagedObjectContext *moc = [[SVAppDelegate sharedAppDelegate] managedObjectContext];

    NSFetchRequest *fetch = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Place" inManagedObjectContext:moc];

    [fetch setEntity:entity];

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name like %@", place];

    [fetch setPredicate:predicate];

    NSError *error;
    NSArray *result = [moc executeFetchRequest:fetch error:&error];

    if(error){
        NSLog(@"allPlaces error: %@", [error localizedDescription]);
    }

    return result;
}

オブジェクトをテーブルに配置する方法です。

TableView.m

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath {
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    SVAppDelegate *ad = [SVAppDelegate sharedAppDelegate];
    NSArray *list = [ad allLikePlaces:_place];

    NSManagedObject *obj = list[indexPath.row];
    cell.textLabel.text = [obj valueForKey:@"name"];

    return cell;
}

これらのオブジェクトのそれぞれに、最新のレコードだけでなく、対応するデータを表示させることができます。

ベースの実装を実装しようとしましたobjectIDが、成功しませんでした。これに関するご支援をいただければ幸いです。

4

1 に答える 1

0

私はあなたのコメントを理解しているかどうかわかりません

名前は UNI です。そのテーブルのすべてのセルは、最後に入力された UNI という名前のレコードを参照し、レコード内の付随する属性ではありません。

nameしかし、Martin が言うように、述語は属性が likeであるすべてのオブジェクトを見つけますplace。したがって、すべての名前は同じになります。

ここで、オブジェクトごとに一意の識別子を作成する場合は、uuid( NSStringtype) のような別の属性を作成し、属性を設定すると同時に、一種の一意の識別子ジェネレーターを入力する必要がありnameます。Apple はそれを行う方法をいくつか提供しています。たとえば、Cocoa を使用した UUID 文字列。クレジットは@Abizernに送られます。

表示については、実行中につかむだけですcellForRowAtIndexPath。例えば

NSString* uuidString = [obj valueForKey:@"uuid"];
// assign it to whatever UI elements you want
// e.g. cell.detailTextLabel.text = uuidString;
于 2013-10-19T17:10:08.583 に答える