我期待下面的代碼將imageSet中的對象作爲排序後的數組返回。相反,在排序前後沒有區別。爲什麼我的對象不能使用sortedArrayUsingDescriptors進行排序?
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"imageID" ascending:YES];
NSSet *imageSet = collection.images;
for (CBImage *image in imageSet) {
NSLog(@"imageID in Set: %@",image.imageID);
}
NSArray *imageArray = [[imageSet allObjects] sortedArrayUsingDescriptors:(descriptor, nil)];
[descriptor release];
for (CBImage *image in imageArray) {
NSLog(@"imageID in Array: %@",image.imageID);
}
Fwiw,CBImage是在我的核心數據模型中定義的。我不知道爲什麼在託管對象上排序的工作與「常規」對象的工作方式不同,但可能很重要。
爲了證明@「圖像標識」應該作爲描述符中的重點工作,這裏的上述輸出的兩個日誌循環的集合中的一個,我迭代通過什麼:
2010-05-05 00:49:52.876 Cover Browser[38678:207] imageID in Array: 360339
2010-05-05 00:49:52.876 Cover Browser[38678:207] imageID in Array: 360337
2010-05-05 00:49:52.877 Cover Browser[38678:207] imageID in Array: 360338
2010-05-05 00:49:52.878 Cover Browser[38678:207] imageID in Array: 360336
2010-05-05 00:49:52.879 Cover Browser[38678:207] imageID in Array: 360335
。 ..爲了獲得額外的榮譽,我很想獲得解決NSSortDescriptor故障的一般解決方案(尤其是如果它也適用於NSPredicate故障排除)。這些東西的功能對我來說似乎完全不透明,因此調試需要永遠。
我能爲我做的工作代碼最接近的適應。但是,這不能成爲你的真實代碼。 - [NSArray sortedArrayUsingDescriptors:]接受一個NSArray,這不是你傳遞的。 – Ken 2010-05-05 08:50:26
實際上,allObjects從NSSet中返回一個NSArray,所以代碼如圖所示......一旦插入了dreamlax的解決方案。 – clozach 2010-05-05 16:31:17