【发布时间】:2016-07-21 06:37:26
【问题描述】:
在我的应用程序中,我在不同日期为单词添加书签,我有排序选项,例如先排序最近的,然后先排序最旧的。我无法根据书签日期对单词进行排序,怎么办?通过使用描述符,我的排序并不好,因为只有前两个条目被排序。我的代码是:
NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"cellType" ascending:NO selector:@selector(localizedCaseInsensitiveCompare:)];
NSSortDescriptor *sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey:@"entrydate" ascending:NO selector:@selector(localizedCaseInsensitiveCompare:)];
NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptor1, sortDescriptor2, nil];
[self.favoriteEntries sortUsingDescriptors:sortDescriptors];
[[NSUserDefaults standardUserDefaults] setValue:@"descendingDate" forKey:@"BookmarkSortType"];
【问题讨论】:
-
而不是localizedCaseInsensitiveCompare 尝试@selector(compare:)
-
entrydate是NSString还是NSDate? -
这取决于您的数据。
localizedCaseInsensitiveCompare仅适用于NSString。如果您的应用在使用该应用时没有崩溃,则说明您的日期是字符串,如果不知道您使用什么格式,我们将无法提供帮助。 -
@Avi 我们使用它作为字符串如何克服它
-
您应该向我们展示这些日期的字符串表示形式。您可能希望使用
NSDateFormatter,然后根据生成的NSDate对象进行排序,但具体情况会因字符串格式而异。
标签: ios objective-c sorting date nssortdescriptor