簡體   English   中英

CoreData謂詞:字符串屬性長度?

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

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