我有一个简单的应用程序,具有以下前提和一些小问题:
- 我有 4 个选项卡,每个选项卡都有一个显示不同信息的表格视图,每个选项卡都有一个加号按钮,以模态方式连接到同一个视图控制器,允许用户向应用程序添加信息。
- 用户在视图控制器中添加名称、标题、日期和金额,当他们按下保存时,它会保存到核心数据表视图中。
第一个选项卡在带有标签等的自定义表格单元格中显示上述所有信息(名称、标题、日期、金额)。效果很好。
第二个选项卡仅显示有关名称的信息,第三个选项卡仅显示标题。这样,用户可以看到第一个选项卡中的所有内容,但只能看到第二个选项卡中的“名称”,他们可以选择收集有关该名称的信息。
当每个名称(或日期或标题)只有一个条目时,该应用程序运行良好,但当我添加第二个条目时,它会在“名称”选项卡中重复。
例如,如果我有一个 John Smith 的条目,只有一个条目,它会在 Name 选项卡中显示一个条目,当我进入时,它只显示附有 John 姓名的交易(这里的 1案子)。都好。
但是,如果我为 John 添加另一个条目(拼写完全相同),它会将其视为单独的条目,并且突然间,名称选项卡现在有 2 个约翰。
我没有在核心数据模型的属性中放置任何唯一 ID,但是我必须这样做吗,或者我可以使用谓词在名称选项卡中询问“如果它已经存在,不要显示两次”酒吧?
任何帮助将不胜感激!
编辑:
这是 Name 选项卡的 fetchRequest:
- (NSFetchedResultsController *)fetchedResultsController
{
NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
if (_fetchedResultsController != nil)
{
return _fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Transaction" inManagedObjectContext:managedObjectContext];
fetchRequest.entity = entity;
NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"whoBy.name" ascending:NO];
fetchRequest.sortDescriptors = [NSArray arrayWithObject:sort];
NSFetchedResultsController *theFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:nil cacheName:nil];
self.fetchedResultsController = theFetchedResultsController;
_fetchedResultsController.delegate = self;
return _fetchedResultsController;
}
正如我们所见,没有谓词或类似的东西。我想要的是一个简单的检查来查看“如果名称存在,不要将它添加两次”到名称表视图。我希望这是有道理的?