0

我坚持订购核心数据关系。我有一个多对多关系,但我无法克服的问题是在一个视图中重新排序关系实体会在它们所属的每个视图中重新排序它们。

示例:使用方法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瞬变,认为通过使用密钥而不是保存它,我将能够在新事件中重新开始。没有骰子。

4

1 回答 1

0

相同的顺序是预期的行为。如果你想“随机化”这个顺序,你必须通过重新分配随机athleteDisplayOrder属性来明确地做到这一点。

编辑:

如果您想为每个项目有一个特殊的用户可定义的运动员顺序,解决此问题的一种方法是创建一个新实体EventAthletes,该实体具有 Event 和 Athlete 的一对一关系,并且还包含显示顺序属性。

结束编辑

顺便说一句,您正在使用带有核心数据的额外数据数组以在表格视图中显示。您是否知道可以使用它NSFetchedResultsController来更有效地管理表视图数据源?

于 2012-12-02T11:50:41.617 回答