我一直在敲我的腦袋,讓我的過濾語句正常工作。我嘗試了一堆東西(正如你在我的評論代碼中看到的那樣)。我試圖做的是在用戶輸入時進行搜索 - 搜索customerObject.firstName,customerObject.lastName和標題 - 如果短語在其中任何一箇中顯示這些結果。 .lastName和.firstName是customerObject的屬性。核心數據謂詞SQL無法解析
class func searchContainsPredicateEstimateInvoice(searchString: String, existingPredicate: NSPredicate? = nil) -> NSPredicate
{
var words = searchString.componentsSeparatedByString(" ")
var predicateList = [NSPredicate]()
for word in words
{
if count(word) > 0
{
var str = NSString(format: "SUBQUERY(%@, $f, $f.%@ CONTAINS[cd] %@) OR SUBQUERY(%@, $l, $l.%@ CONTAINS[cd] %@) OR (%@ CONTAINS[cd] %@)", "\(CUSTOMER_OBJECT_KEY)","\(USER_FIRST_NAME_LOCAL_KEY)" ,word, "\(CUSTOMER_OBJECT_KEY)", "\(USER_LAST_NAME_LOCAL_KEY)", word, ESTIMATE_NAME_KEY, word)
println(str)
var pred = NSPredicate(format: "SUBQUERY(%@, $f, $f.%@ CONTAINS[cd] %@) OR SUBQUERY(%@, $l, $l.%@ CONTAINS[cd] %@) OR (%@ CONTAINS[cd] %@)", "\(CUSTOMER_OBJECT_KEY)","\(USER_FIRST_NAME_LOCAL_KEY)" ,word, "\(CUSTOMER_OBJECT_KEY)", "\(USER_LAST_NAME_LOCAL_KEY)", word, ESTIMATE_NAME_KEY, word)
//var pred = NSPredicate(format: "SUBQUERY(customerObject, $f, $f.firstName CONTAINS[cd] W)[email protected] > 0")
//var pred = NSPredicate(format: "SUBQUERY(customerObject, $g, $g.firstName CONTAINS[cd] %@)[email protected] > 0", word)
//var str = NSString(format: "SUBQUERY(%@, $f, $f.%@ CONTAINS[cd] %@) OR SUBQUERY(%@, $l, $l.%@ CONTAINS[cd] %@) OR (%@ CONTAINS[cd] %@)", "\(CUSTOMER_OBJECT_KEY)","\(USER_FIRST_NAME_LOCAL_KEY)" ,word, "\(CUSTOMER_OBJECT_KEY)", "\(USER_LAST_NAME_LOCAL_KEY)", word, ESTIMATE_NAME_KEY, word)
predicateList.append(pred)
}
}
if existingPredicate != nil
{
predicateList.append(existingPredicate!)
}
return NSCompoundPredicate(type: .AndPredicateType, subpredicates: predicateList)
}
//var pred = NSPredicate(format: "SUBQUERY(%K, $f, $f.%K CONTAINS[cd] %@) OR SUBQUERY(%K, $l, $l.%K CONTAINS[cd] %@) OR (%K CONTAINS[cd] %@)", "\(CUSTOMER_OBJECT_KEY)","\(USER_FIRST_NAME_LOCAL_KEY)" ,word, "\(CUSTOMER_OBJECT_KEY)", "\(USER_LAST_NAME_LOCAL_KEY)", word, ESTIMATE_NAME_KEY, word)
這是對日誌顯示的內容與實際值:
SUBQUERY(customerObject, $f, $f.firstName CONTAINS[cd] W) OR SUBQUERY(customerObject, $l, $l.lastName CONTAINS[cd] W) OR (name CONTAINS[cd] W)
數據模型:
「customerObject」是否是您實體中的關係?一對一還是多對一?核心數據模型的屏幕截圖可能很有用。 –
沒有意識到查詢的關係。所以是的 - customerObject是一個不同的核心數據實體,一個估計有一個引用。 – Spentak