2017-01-17 8 views
-4

내 배열을 월요일부터 금요일 순으로 정렬해야합니다. 나는그 안에 NSDictionary로 NSArray 정렬

NSArray *userDays = [NSArray arrayWithObjects:@"Monday", @"Tuesday", @"Wednesday",@"Thursday",@"Friday",nil]; 
[sortArray addObject:model.title]; 
NSArray *sortedUserDays = [userDays filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF in (%@)", sortArray]]; 

그래서, sortArray가 5 개체 월요일, 화요일, 수요일, 목요일, 금요일을 가지고 여기에 그 부분을했다. 문제는 정렬해야 할 배열을 정렬 할 때입니다. tempArray을 가정 해 봅시다. 방금 정렬 작업을 위해 sortArray를 만들었습니다.

tempArray 안에는 NSDictionary가 있습니다. 그리고 일 (월요일, 화요일 등)은 제목에 있습니다. 이 라인

NSArray *sortedUserDays = [userDays filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF in (%@)", sortArray]]; 

에서 지금

나는 tempArray.model.title처럼 무언가에 의해 에게 sortArray을 변경해야합니다. 중첩 된 NSArray를 정렬하려면 어떻게해야합니까?

예 데이터 :

tempArray[0] 
{ title : "Friday", identity: "someUniqueIdentity", url: "httpwww.123" } 

tempArray[1] 
{ title: "Wednesday", identity: "someUniqueIdentity2", url :"httpwww.1233" } 

tempArray[2] 
{ title: "Monday", identity: "someUniqueIdentity3", url: "httpwww.1233" } 


tempArray[3] 
{ title: "Thursday", identity: "someUniqueIdentity3", url :"httpwww.1233" } 


tempArray[4] 
{ title: "Tuesday", identity: "someUniqueIdentity3", url: "httpwww.1233" } 

예상 출력 : 당신이 찾고있는 것을 이해 확실하지 오전하지만, 이런 식으로 뭔가를 할 수

tempArray[0] 
{ title: "Monday", identity: "someUniqueIdentity3", url: "httpwww.1233" } 

tempArray[1] 
{ title: "Tuesday", identity: "someUniqueIdentity3", url :"httpwww.1233" } 

tempArray[2] 
{ title: "Wednesday", identity: "someUniqueIdentity2", url :"httpwww.1233" } 

tempArray[3] 
{ title: "Thursday", identity: "someUniqueIdentity3", url :"httpwww.1233" } 

tempArray[4] 
{ title: "Friday", identity: "someUniqueIdentity", url: "httpwww.123" } 
+1

내가 원하는 것을 곧 알 수 있습니까? – Arun

+0

당신이하고있는 것은 필터가 정렬되지 않은 것입니다. 먼저 그것에 대해 클리트를해야합니다. –

+0

내 중첩 NSArray를 월요일, 화요일, 수요일, 목요일, 금요일 형식으로 정렬합니다. – Supermannoying

답변

0

?

NSArray *tempArray = @[ 
     @{ @"title": @"Friday", @"identity" : @"someUniqueIdentity", @"url" : @"httpwww.123"}, 
     @{ @"title" : @"Wednesday", @"identity" : @"someUniqueIdentity2", @"url" : @"httpwww.1233" }, 
     @{ @"title" : @"Monday", @"identity" : @"someUniqueIdentity3", @"url" : @"httpwww.1233" }, 
     @{ @"title" : @"Thursday", @"identity" : @"someUniqueIdentity3", @"url" : @"httpwww.1233" }, 
     @{ @"title" : @"Tuesday", @"identity" : @"someUniqueIdentity3", @"url" : @"httpwww.1233" } 
]; 

NSArray *weekdays = @[@"Monday", @"Tuesday", @"Wednesday", @"Thursday", @"Friday"]; 

NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"title" ascending:YES comparator:^NSComparisonResult(NSString *day1, NSString *day2) { 
    NSUInteger index1 = [weekdays indexOfObject:day1]; 
    NSUInteger index2 = [weekdays indexOfObject:day2]; 
    return (NSComparisonResult) (index1 >= index2); 
}]; 

NSArray *result = [tempArray sortedArrayUsingDescriptors:@[descriptor]]; 
+0

예. 이 'NSArray * filteredUser = [NSPredicate predicateWithFormat : @ "SELF in (% @)", [tempArray valueForKey : @ "title"]]];하지만 필터링 된 사용자는 이제 단지 5 개의 개체를 가진 NSArray입니다. , 월요일부터 금요일까지.다른 열쇠는 사라졌습니다 – Supermannoying

+0

@Supermannoying 내 대답을 편집했습니다. 아마도 코드를 조금 더 강력하게 만들어야합니다. – Andi