我想按'recordDate'將數據分成不同的部分,然後對於每個部分數據將按'elementName'按升序排序。以下是當前代碼(不工作):當第一個描述符是NSDate時,多個NSSortDescriptor不工作
NSManagedObjectContext *context = self.tankDatabase.managedObjectContext;
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Log"];
request.sortDescriptors = [NSArray arrayWithObjects:[NSSortDescriptor sortDescriptorWithKey:@"recordDate" ascending:NO], [NSSortDescriptor sortDescriptorWithKey:@"elementName" ascending:YES selector:@selector(localizedStandardCompare:)], nil];
request.predicate = [NSPredicate predicateWithFormat:@"ownedBy = %@", self.tank];
self.controller = [[NSFetchedResultsController alloc]
initWithFetchRequest:request
managedObjectContext:context
sectionNameKeyPath:@"recordDate"
cacheName:nil];
self.controller.delegate = self;
NSError *error;
BOOL success = [self.controller performFetch:&error];
然而,當我嘗試使用其他屬性進行排序(例如:ASC的ElementName,價值DESC並將它們按的ElementName)它的工作,因爲它應該。請注意,recordDate是數據模型中的'Date'類型和類中的NSDate。
另外recordDate包含分鐘&秒,它需要分組到這個細節。
我試圖搜索整個互聯網類似的情況下,但我還沒有找到任何解決方案的工作。我在代碼中錯過了什麼?還是僅僅是一個蘋果的錯誤?感謝您的時間和協助。
如果從第二個排序描述符中刪除選擇器會發生什麼? CoreData對數據庫中的東西進行排序,因此您不能使用自定義選擇器或比較器進行排序描述符。 – 2012-08-15 09:59:52
如果我刪除選擇器,沒有什麼改變。 – 2012-08-15 15:11:59