我被困在訂購核心數據關係。我有一對多的關係,但是我無法克服的問題是,在一個視圖中重新排序關係實體會在它們所屬的每個視圖中重新排序它們。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