-3

callTypeiOS 開発では非常に新しいため、NsArray の並べ替えと混同しています。カスタム配列があります。以下の値を持つ NsArray を group by andとして並べ替えたいと思いますnumberId

    {
        callID = 1;
        callType = 4;
        dateTime = "2013-10-11 14:42:10 +0000";
        durationOfCall = "00:00:27";
        numberCalled = 91xxxxxxxxx;
        numberId = 8;
    },
    {
        callID = 1;
        callType = 4;
        dateTime = "2013-10-11 14:24:19 +0000";
        durationOfCall = "00:00:15";
        numberCalled = 91xxxxxxxxx;
        numberId = 9;
    },
    {
        callID = 1;
        callType = 4;
        dateTime = "2013-10-11 13:59:18 +0000";
        durationOfCall = "00:00:11";
        numberCalled = 91xxxxxxxxx;
        numberId = 8;
    },
    {
        callID = 1;
        callType = 4;
        dateTime = "2013-10-11 13:57:55 +0000";
        durationOfCall = "00:00:09";
        numberCalled = 91xxxxxxxxx;
        numberId = 8;
    },
    {
        callID = 1;
        callType = 4;
        dateTime = "2013-10-11 13:56:02 +0000";
        durationOfCall = "00:00:12";
        numberCalled = 91xxxxxxxxx;
        numberId = 8;
    },
    {
        callID = 1;
        callType = 4;
        dateTime = "2013-10-11 13:55:41 +0000";
        durationOfCall = "00:00:00";
        numberCalled = 91xxxxxxxxx;
        numberId = 8;
    }

)

結果は、各グループのカウントを取得する場所のようなものになるはずです

   {
        count = 4 // number of 
        callID = 1;
        callType = 4;
        dateTime = "2013-10-11 14:42:10 +0000";
        durationOfCall = "00:00:27";
        numberCalled = 91xxxxxxxxx;
        numberId = 8;
   },
   {
        count = 1 // number of 
        callID = 1;
        callType = 4;
        dateTime = "2013-10-11 14:24:19 +0000";
        durationOfCall = "00:00:27";
        numberCalled = 91xxxxxxxxx;
        numberId = 9;
   }
}

これが上記のカスタムクラスです

#import <Foundation/Foundation.h>

@interface RecentCallsModel : NSObject


@property (nonatomic, retain) NSNumber *callID; // Integer 32
@property (nonatomic, retain) NSNumber *callType; // Integer32
@property (nonatomic, retain) NSString *numberId; // Either phone number or the contact id
@property (nonatomic, retain) NSDate *dateTime; //Date and time
@property (nonatomic, retain) NSString *durationOfCall;
@property (nonatomic, retain) NSString *numberCalled;


@end
4

1 に答える 1

2

それが動作します......

NSArray *sortedArray;
sortedArray = [array sortedArrayUsingComparator:^NSComparisonResult(id a, id b) 
{
    NSNumber *firstCallType = [(RecentCallsModel*)a CallType];
    NSNumber *secondCallType = [(RecentCallsModel*)b CallType];
    NSNumber *firstNumberID = [(RecentCallsModel*)a NumberID];
    NSNumber *second NumberID = [(RecentCallsModel*)b NumberID];
    if([firstCallType compare:secondCallType]==NSOrderedSame)
               {
                if([firstNumberID compare:secondNumberID]==NSOrderedSame)
                         {
                        //count logic
                         }
               else
                   return [firstNumberID compare:secondNumberID];
               }
   else
              return [firstCallType compare:secondCallType];
}];
于 2013-10-14T08:55:53.133 に答える