[英]NSArray from NSSet - Do I have to sort it myself?
我在NSSet中有數據,我需要將它放入NSArray中。
我是否需要自己排序(再次,這來自Core Data)或者我可以按排序順序將其排除嗎?
通過將sortDescriptors
屬性設置為NSSortDescriptor
數組,可以在使用NSFetchRequest
檢索數據時指定排序。 但是如果你已經在NSSet
擁有它並且不想再發送一個獲取請求,你可以使用:
[[theSet allObjects] sortedArrayUsingDescriptors:sortDescriptors];
當你調用allObjects
然后調用另一個已排序的數組時,它將創建一個臨時NSArray
,因此它不是100%有效,但對於合理大小的數據集(並且肯定低於排序成本),開銷應該可以忽略不計。
實際上,我錯了 - NSSet也有sortedArrayUsingDescriptors:
方法。 所以你可以調用[theSet sortedArrayUsingDescriptors:descriptors]
並一次完成所有操作。
你必須自己排序,但這不是很難......
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Sprocket" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"sortVariable" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
NSError *error;
NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
self.sprocketArray = mutableFetchResults;
[sortDescriptors release];
[sortDescriptor release];
[mutableFetchResults release];
[request release];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.