[英]NSPredicate to use with Transformable property
我有一些字符串數組,我將這些字符串保存為“可變形”。 從json我得到這樣的所需字符串:
if let mealTimes = dictionary["mealTimes"] as? [String]{
self.mealTimes = mealTimes
}
現在,我想按進餐時間屬性中的字符串過濾獲取結果。 我已經嘗試過這種方式:
let predicate = NSPredicate(format: "mealTimes LIKE[cd] '*%@*'", "breakfast")
var breakfastContents = StaticContent.fetchStaticContentsWithPredicate(predicate, inManagedObjectContext: self.coreDataStack.context)
if (breakfastContents.count > 0) {
breakfast = breakfastContents.first!
}
問題是結果數組為空,但我知道某些內容中包含早餐字符串。 那么我該如何解決呢? 我正在閱讀有關將transformable保存為NSData的內容,因此需要一些技巧。 我試圖使用LIKE
(帶有*和不帶有*)命令和CONTAINS
。
StaticContent擴展:
class func fetchStaticContentsWithPredicate(predicate: NSPredicate, inManagedObjectContext managedObjectContext: NSManagedObjectContext) -> [StaticContent] {
// Define fetch request/predicate
var fetchRequest = NSFetchRequest(entityName: "StaticContent")
// Assign fetch request properties
fetchRequest.predicate = predicate
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "id", ascending: true)]
// Handle results
let fetchedResults = managedObjectContext.executeFetchRequest(fetchRequest, error: nil) as! [StaticContent]
return fetchedResults
}
您應該重構數據模型以擺脫“字符串數組”。 這不是存儲此類值的非常合理的方法。
相反,請考慮與捕獲這些字符串的新實體建立關系。 或者,使用一種方案,在該方案中您存儲一個字符串並具有一個分隔記錄的唯一字符(例如;
或類似名稱)。 然后,任何簡單的字符串謂詞都將起作用,如下所示:
NSPredicate(format: "mealtimes contains[cd] %@", "breakfast")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.