2012-12-01 29 views
0

我被困在訂購核心數據關係。我有一對多的關係,但是我無法克服的問題是,在一個視圖中重新排序關係實體會在它們所屬的每個視圖中重新排序它們。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短暫的思考,通過使用密鑰和不保存它,我將能夠重新開始在一個新的事件。沒有骰子。

回答

0

相同的排序是預期的行爲。如果您想要「隨機化」訂單,則必須通過重新指定隨機athleteDisplayOrder屬性來明確執行此操作。

編輯:

如果你想擁有運動員的特殊用戶自定義爲了使每個事件解決方法之一是創建具有一對一的關係既事件和運動員和一個新的實體EventAthletes還包含顯示順序屬性。

END EDIT

順便說一句,使用的是具有核心數據的額外數據陣列用於在表瀏覽顯示。你知道你可以使用NSFetchedResultsController更有效地管理你的表格視圖數據源嗎?

+0

我沒有在這裏使用NSFetchedResultsController,因爲MC在加載時傳遞給視圖。在viewDidLoad中,我調用NSMutableArray * sortedAthletes = [[NSMutableArray alloc] initWithArray:[event.eventAthletes allObjects]]; \t [sortedAthletes sortUsingDescriptors:sortDescriptors]; \t self.eventAthletes = sortedAthletes;只有在這種觀點下與這種關係一起工作。在這個階段,存在一個事件,運動員被分配到該事件中,並且我想讓最終用戶能夠訂購運動員。我遇到的問題是有序的運動員在每個事件中都保持這個順序。 – Mike

+0

@Mike如果你想每個事件的自定義訂單,請參閱我的編輯。 – Mundi

+0

我希望有一個更簡單的方法,但這是我的想法。非常感謝您的幫助! – Mike