所以我有表格,我已经设置了一个名为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
的实施,但没有成功。我非常感谢你提供任何帮助。
答案 0 :(得分:0)
我不确定我理解你的评论
名称是UNI,该表中的所有单元格将引用该名称 最后输入了UNI这个名字的记录而不是他们的伴随记录 记录中的属性。
但正如Martin所说,您的谓词会找到name
属性类似place
的所有对象。所以,所有名字都是平等的。
现在,如果要为每个对象创建唯一标识符,则应创建另一个属性,如uuid
(NSString
类型),并同时使用一种唯一标识符生成器填充它您设置了name
属性。 Apple提供了几种方法。例如UUID Strings With Cocoa。积分归 @Abizern 。
关于显示它,只需在您运行cellForRowAtIndexPath
时抓住。 e.g。
NSString* uuidString = [obj valueForKey:@"uuid"];
// assign it to whatever UI elements you want
// e.g. cell.detailTextLabel.text = uuidString;