2013-10-23 20 views
0

我有一個核心數據實體MediaAsset。我有另一個名爲UploadAttempt,它跟蹤我們將MediaAsset上傳到我們中央服務器的所有嘗試。我想從第一個UploadAttempt訂購的數據存儲中取MediaAssetNSSortDescriptor使用相關對象中日期的最小值

MediaAsset具有3個UploadAttempt S,A,B,和C. UploadAttempt具有attemptDate屬性和我想找到每個MediaAsset最早UploadAttempt並用其作爲排序。

我想創建的線沿線的東西NSSortDescriptor:其中attemptDate是特定MediaAsset最早attemptDate

order by MediaAsset.uploadAttempts.attemptDate

這有道理嗎?任何幫助表示讚賞。

(注意:假設我不能額外的屬性添加到MediaAsset這是已經存在的數據,我不能改變它)

+0

你的意思是說MediaAsset和UploadAttempt是2個獨立的實體嗎?在這種情況下,他們是通過1-1關係聯繫在一起的嗎? – Subzero

+0

一對多。每個MediaAsset可能有多個UploadAttempts。 –

回答

0

如果我正確理解你的問題,下面應該工作。如果不是,請再次ping我,我們會理解並一起糾正它。

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entityDesc = [NSEntityDescription entityForName:@"UploadAttempt" 
inManagedObjectContext:self.managedObjectContext]; 
[fetchRequest setEntity:entityDesc]; 
NSError *error = nil; 


NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"date" 
ascending:YES]; 
NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptor, nil];  

[fetchRequest setSortDescriptors:sortDescriptors]; 

NSArray *dateSortedAttempts = [self.managedObjectContext executeFetchRequest:fetchRequest 
error:&error]; 

NSSet* mediaAssets= [NSSet setWithArray:[items valueForKeyPath:@"@distinctUnionOfObjects.MediaAsset"]]; 
+0

這看起來非常有趣,我不知道這個set函數,但是當它們變成NSSet時,我不會失去MediaAssets的排序,因爲一個set是一個無序集合? –

+0

的確如此。我同意 - 錯過了這一點。您可以通過https://developer.apple.com/library/mac/documentation/cocoa/conceptual/KeyValueCoding/Articles/CollectionOperators.html中的KVC指南閱讀各種操作符。有些東西你可以像數組一樣做。 – Subzero

相關問題