2012-12-01 7 views
0

핵심 데이터 관계를 주문해야합니다. 나는 많은 관계가 있지만 극복 할 수없는 문제는 관계형 엔터티를 한 번에 다시 정렬하면 속한 모든 뷰에서 관계형 엔터티를 다시 정렬한다는 것입니다.moveRowAtIndexPath 및 CoreData Relationships

예 : Peopleactivity1에 추가되며 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를 만드는 것입니다 또한 표시 순서 특성을 포함합니다.

BTW

END 편집하면 테이블 뷰 디스플레이를위한 코어 데이터와 추가 데이터 배열을 사용한다. NSFetchedResultsController을 사용하여 테이블 뷰 데이터 소스를 훨씬 더 효율적으로 관리 할 수 ​​있다는 것을 알고 계셨습니까?

+0

로드 될 때 MC가 뷰로 전달되었으므로 여기서 NSFetchedResultsController를 사용하지 않습니다. viewDidLoad에서 NSMutableArray를 호출합니다. * sortedAthletes = [[NSMutableArray alloc] initWithArray : [event.eventAthletes allObjects]]; \t [sortedAthletes sortUsingDescriptors : sortDescriptors]; \t self.eventAthletes = sortedAthletes; 이 견해에서 관계와 만 협력합니다. 이 단계에서는 이벤트가 존재하며, 선수는 상기 이벤트에 배정되어 최종 사용자에게 선수를 주문할 수있는 권한을 부여하고자합니다. 주문한 운동 선수가 모든 행사에서 그 순서를 지키고 있다는 문제가 있습니다. – Mike

+0

@Mike 이벤트 당 맞춤 주문이 필요한 경우 내 수정을 참조하십시오. – Mundi

+0

나는 더 간단한 방법이 있었으면 좋겠다고 생각했지만 이것은 내가 생각한 것입니다. 도와 주셔서 대단히 감사합니다! – Mike