簡體   English   中英

可轉換的 CoreData NSPredicate 導致 EXC_BAD_ACCESS

[英]CoreData NSPredicate on a Transformable causes EXC_BAD_ACCESS

使用NSPredicate在 Core Data 中的Transformable中搜索數組元素是否存在的正確方法是什么?

我有一個具有可Transformable TypeAttribute operationDays 的Entity ,該Entity是給定Custom Class [Int] 在此處輸入圖片說明 我用它來存儲整數數組。 它的工作原理到店,但我得到EXC_BAD_ACCESS時嘗試使用NSPredicate獲取它們

我知道

操作天數是 {1,2,3,4}

我正在嘗試,但它們都因錯誤而失敗。

//day is an Int (1) in this case

NSPredicate(format: "%d IN operationalDays",day) 
NSPredicate(format: "%i IN operationalDays",day) 
NSPredicate(format: "%@ IN operationalDays",day) 
NSPredicate(format: "operationalDays CONTAINS %d",day) 
NSPredicate(format: "operationalDays CONTAINS %i",day)
NSPredicate(format: "operationalDays CONTAINS %@",day)

當我在崩潰后檢查謂詞時,我得到

謂詞:(1 IN operationDays);

要么

謂詞:(operationalDays CONTAINS 1)

可轉換屬性作為二進制數據存儲在 Sqlite DB 中。 除非您的謂詞也有二進制數據,否則您無法對該數據運行查詢。 可轉換屬性遵循 NSCoding 協議,因此 Core Data 知道如何序列化和反序列化屬性。

PS要查看Sqlite拋出的錯誤,嘗試添加

-com.apple.CoreData.SQLDebug 1

到您的 Xcode 方案中的“啟動時傳遞的參數”。

在此處輸入圖片說明

你應該使用這種風格的謂詞

let predicate = NSPredicate(format: "%@ IN days", argumentArray: [valueOfArgumentHere])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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