我被困在订购核心数据关系。我有一对多的关系,但是我无法克服的问题是,在一个视图中重新排序关系实体会在它们所属的每个视图中重新排序它们。moveRowAtIndexPath和CoreData的关系
例如:People
被添加到activity1
并且使用moveRowAtIndexPath
方法随机地排序。那些同样的人被添加到activity2
,并被命令相同的activity1
。我怎样才能阻止呢?
相关代码:
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
{
NSUInteger fromRow = [fromIndexPath row];
NSUInteger toRow = [toIndexPath row];
id object = [[eventAthletes objectAtIndex:fromRow] retain];
[eventAthletes removeObjectAtIndex:fromRow];
[eventAthletes insertObject:object atIndex:toRow];
int i = 0;
for (object in eventAthletes)
{
[object setValue:[NSNumber numberWithInt:i++] forKey:@"athleteDisplayOrder"];
}
[self saveContext];
[object release];
}
我更新了模型,并提出了属性athleteDisplayOrder
短暂的思考,通过使用密钥和不保存它,我将能够重新开始在一个新的事件。没有骰子。
我没有在这里使用NSFetchedResultsController,因为MC在加载时传递给视图。在viewDidLoad中,我调用NSMutableArray * sortedAthletes = [[NSMutableArray alloc] initWithArray:[event.eventAthletes allObjects]]; \t [sortedAthletes sortUsingDescriptors:sortDescriptors]; \t self.eventAthletes = sortedAthletes;只有在这种观点下与这种关系一起工作。在这个阶段,存在一个事件,运动员被分配到该事件中,并且我想让最终用户能够订购运动员。我遇到的问题是有序的运动员在每个事件中都保持这个顺序。 – Mike
@Mike如果你想每个事件的自定义订单,请参阅我的编辑。 – Mundi
我希望有一个更简单的方法,但这是我的想法。非常感谢您的帮助! – Mike