簡體   English   中英

按屬性對自定義對象的NSArray進行排序-DBMetadata-Dropbox

[英]Sorting NSArray of Custom Objects by property - DBMetadata - Dropbox

我找不到為什么對DBMetadata (NSObject) NSArray排序不起作用的原因。 這是我的代碼。 怎么了? 我什至嘗試添加一個類別來添加compare:但是它不起作用。

- (void)restClient:(DBRestClient *)client loadedMetadata:(DBMetadata *)metadata {
    if (metadata.isDirectory) {
        NSLog(@"Folder '%@' contains:", metadata.path);
        for (DBMetadata *file in metadata.contents) {
            NSLog(@"\t%@  is directory? %d", file.filename, file.isDirectory);
            if (file.isDirectory) {
                [self.availableBackups addObject:file];
                DLog(@"llastModifiedDate %@", file.lastModifiedDate);
            }
        }
    }
//    NSLog(@"before sorting: %@", self.availableBackups); //lastModifiedDate //filename

    NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"lastModifiedDate"  ascending:YES selector:@selector(compare:)];
    [self.availableBackups sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];

//    NSLog(@"after sorting: %@", self.availableBackups);
}

self.availableBackupsNSMutableArray

@property (nonatomic, retain) NSMutableArray *availableBackups;

投寄箱-DBMetadata.h

注釋NSLog僅打印obj的地址,排序后無論YESNO ascending: ,您都可以看到address的輸出仍然相同ascending:

輸出

2013-01-31 17:20:12.423 Dropbox[7366:c07] before sorting: (
    "<DBMetadata: 0x6bbf010>",
    "<DBMetadata: 0x6bbfb50>",
    "<DBMetadata: 0x6bc1660>",
    "<DBMetadata: 0x6bc17b0>",
    "<DBMetadata: 0x6bc14f0>",
    "<DBMetadata: 0x6bc0dd0>",
    "<DBMetadata: 0x6bc1de0>"
)
2013-01-31 17:20:12.424 Dropbox[7366:c07] after sorting: (
    "<DBMetadata: 0x6bbf010>",
    "<DBMetadata: 0x6bbfb50>",
    "<DBMetadata: 0x6bc1660>",
    "<DBMetadata: 0x6bc17b0>",
    "<DBMetadata: 0x6bc14f0>",
    "<DBMetadata: 0x6bc0dd0>",
    "<DBMetadata: 0x6bc1de0>"
)

升序NO

Last Modified file at 0: 2013-01-30 08:00:22 +0000
Last Modified file at 1: 2013-01-30 08:02:54 +0000
Last Modified file at 2: 2013-01-31 09:08:26 +0000
Last Modified file at 3: 2013-01-31 09:14:55 +0000
Last Modified file at 4: 2013-01-31 09:14:08 +0000
Last Modified file at 5: 2013-01-31 09:16:43 +0000
Last Modified file at 6: 2013-01-31 10:36:13 +0000

sortedArrayUsingDescriptors:返回一個數組,它不會修改您要對其應用的數組。 如果需要使用NSArray ,請嘗試:

self.availableBackups = [self.availableBackups sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];    

如果可以使用NSMutableArray ,則可以使用:

[self.availableBackups sortUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];       

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM