簡體   English   中英

NSPredicate與Transformable屬性一起使用

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

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