2017-07-13 129 views
0

我對核心數據相當陌生。我有包含不同類別文章的數據庫。我想從多個類別獲取數據,這些數據可以由用戶隨時選擇。現在我有NSArray其中包含選定的多個類別(從1到n計數)我想添加所選類別的謂詞,但我無法這樣做。根據我的知識,我已經添加了用於在謂詞中添加類別的循環,但它不起作用。如何在覈心數據中使用NSArray中的Dynamic Multiple NSPredicate

for i in 0...(catArray?.count)!-1 { 
    let str = String(format:"catId = %@",(catArray?.object(at: i) as? NSNumber)!) 
    predicateString = predicateString+str 
} 
let dP = NSPredicate(format:"%@",predicateString) 
fetchedRequest.predicate=dP; 

但是在獲取請求時應用程序崩潰。 有沒有其他方法可以做到這一點? 請幫我這個。

任何幫助,非常感謝。

+0

使用NSCompoundPredicate。例如在這裏:https://stackoverflow.com/questions/34202239/nspredicate-with-multiple-arguments-and-and-behaviour。 –

+0

的可能的複製[NSPredicate使用多個參數與「和行爲」(https://stackoverflow.com/questions/34202239/nspredicate-with-multiple-arguments-and-and-behaviour) –

+0

不過是你要選擇的對象其中有任何類別從選定的數組,然後它只是'NSPredicate(格式:「catId IN%@」,catArray)' –

回答

1

要選擇具有從給定的陣列的任何類別對象 簡單謂詞是足夠:

NSPredicate(format: "catId IN %@", catArray) 

備註:從不使用String(format:)動態構建謂詞, 因爲幾乎可以肯定的引號和轉義意願是錯的。 只能使用NSPredicate(format:),如有必要,請使用NSCompoundPredicate

相關問題