检查Core Data关系中是否存在相同的对象

时间:2014-12-04 18:41:31

标签: ios arrays uitableview core-data

我有2种NSManagedObject子类 - “Subject”和“TimeOfSchedule”。实体主题与TimeOfSchedule

相关联
@property (nonatomic, retain) TimeOfSchedule *timeOfSubject;

在我的TableView中,我从数组填充单元格,我从Core Data中获取此数据

TimeOfSchedule *objectDate = [timesArray objectAtIndex:(long)indexPath.row];

但是如果有这样的TimeOfSchedule与Subject相关联,或者Subject与关系具有相同的对象,我想以另一种方式填充单元格。我怎么做这样的chek或验证?

2 个答案:

答案 0 :(得分:2)

首先,从Core Data获取以填充数组不是一个好主意。您应该浏览NSFetchedResultsController API并使用它。

其次,一旦检索了表视图单元的对象,就可以像检查Objective-C中是否存在任何其他对象一样进行检查。

if (objectDate.subject) {
  // dequeue cell for displaying subject
}
else {
  // dequeue cell for displaying only the date 
}

答案 1 :(得分:0)

如果您不想在加载时填充数组,您可以随时调用数据库以查看是否有任何对象与另一个对象相关。

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Subject"];
        request.predicate = [NSPredicate predicateWithFormat:@"timeOfSubject == %@",objectDate];

        NSError *error;
        NSArray *matches = [self.managedObjectContext executeFetchRequest:request error:&error];

        if ([matches count]) { // Do Something;
        } else { // Do Something Else
        }

希望它有所帮助。