2009-07-13 96 views
4

有沒有辦法從核心數據存儲中選擇固定數量的隨機條目?我剛剛開始使用Core Data,並且在相當一段時間內一直停留在這個問題上。從核心數據存儲中選擇隨機條目

作爲最後的手段,我可​​以查詢大量的條目到內存中,然後隨機選擇一個固定的數字。

另外,有沒有辦法指定要在覈心數據存儲上執行的自定義SQL語句?我意識到這是不太可能的,因爲商店的底層實現也可能是XML文件。

回答

2

嗯......也許

[[[managedObjectsContext registeredObjects] allObjects] objectsAtIndex:r] 

其中r是0和對象減去一個數之間隨機中斷?一點效率都不高,但又快又簡單。

編輯:如果你想選擇一個選擇你的對象之間的隨機對象,然後創建一個讀取請求描述你的對象選擇並執行與上面的查詢結果:

[[[managedObjectsContext executeFetchRequest:request error:&error] objectAtIndex:r] 
+0

並非我店中的所有託管對象都屬於同一類型。我想要一個特定類型的隨機輸入。在所有註冊的對象中挑選一個隨機對象可能不起作用。 我在我的條目中使用標識字段。幸運的是,我知道沒有缺失的身份值。我只是隨機選擇身份值並使用相同的方式指定NSPredicate。雖然這是現在的工作,但必須有更好的方法。 儘管感謝您的幫助。 – Buzzy 2009-07-14 03:26:13

0

關於你的第二個問題,這是核心數據的一個要點,用於抽象出底層數據存儲。使用NSPredicate和NSExpressions構建一個提取請求,或者將其存儲在數據模型中是查詢商店的唯一方法。

0

不確定,但我認爲Core Data會爲您提供數據到NSSets。所以你可以使用 - [NSSet anyObject]。我沒有測試過這個或任何東西。

+2

-anyObject從開發者的角度來看是隨機的,因爲你無法控制它,但實際上它只是內部數據存儲根目錄中的任何對象,所以它始終是相同的對象,直到該集被改變。 – TALlama 2009-11-29 10:27:41