[英]CoreData predicate: string property length?
假如我有一個實體Fragment
,它有一個屬性'text'是一個字符串,我想查詢其text
長度為5的Fragment
列表:
[NSPredicate predicateWithFormat:@"position == %@ AND text.length == %d", pos, 5];
它不起作用(即返回沒有結果),但如果我在查詢中刪除text.length它可以工作,我確定有長度為5的文本,那么我需要將它更改為什么?
謝謝!
NSPredicate
字符串沒有長度屬性。 請改用正則表達式。 您的謂詞應如下所示:
[NSPredicate predicateWithFormat:@"position == %@ AND text MATCHES %@", pos, @".{5}"];
我認為它將text.lengh視為一種關系。 嘗試僅使用位置設置謂詞,然后執行循環查找text.length == 5。
您不能在Core Data fetch請求中使用Objective-C函數,例如length
。 但您可以使用“LIKE”運算符替換它,該運算符執行簡單的模式匹配:
[NSPredicate predicateWithFormat:@"text LIKE %@", @"?????"];
一個有趣的觀點是,Core Data不會拋出異常或返回錯誤,而只是忽略length
方法,即它只是使用謂詞"text = '5'
而不是。這可以通過激活Core Data調試輸出來看到設置啟動參數
-com.apple.CoreData.SQLDebug 3
(這通常是定位Core Data獲取問題的好方法)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.