簡體   English   中英

來自NSSet的NSArray - 我必須自己排序嗎?

[英]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.

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