[英]The correct NSPredicate format for one-to-many relationship in Core Data
我有一個具有一對多關系的托管對象模型A和B。
對於此特定任務,我想檢索所有與B有關系且屬性與“字符串”匹配的A對象。
我嘗試了@"ALL bObjects.bProperty MATCHES 'string'"
,它導致了objc_exception_throw的出現:
[NSSQLGenerator generateSQLStatementForFetchRequest:ignoreInheritance:countOnly:]
似乎是什么問題?
有人可以建議我正確的謂詞格式嗎?
根據《 謂詞編程指南》 ,從Core Data SQL存儲中獲取數據時,不能使用MATCHES
運算符。
matches
運算符使用regex
,因此Core Data的SQL存儲不支持regex
盡管它確實適用於內存過濾。
至於謂詞的其余部分,當前僅返回A
對象,其中整個bObjects
集具有與輸入字符串匹配的bProperty
。
如果要返回的任何A
對象在bObjects
集中具有bObjects
匹配的任何對象,則需要使用ANY
運算符。
ANY bObjects.bProperty LIKE[cd] 'string'
感謝您指出這些局限性,就像我想相信的文檔一樣,我嘗試了針對SQLite獲取請求的MATCHES,它確實起作用,盡管出於安全考慮,我將其更改為LIKE。
唯一不起作用的是,如果我在使用SQLite存儲的Core Data上使用此謂詞,並且對相關對象(在這種情況下為多個)進行獲取請求,則不使用匹配項。
現在,我沒有使用基於關系的獲取查詢,這太冒險了,我仍然不知道出了什么問題,我已經將其發布在devforums.apple.com上,盡管沒有人回答。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.