2016-04-17 25 views
2

在我的項目中,使用CloudKit記錄類型「用戶」(我已經使用其他記錄類型名稱進行了測試),我創建了一個包含電子郵件字段的記錄。Cloudkit以特定字符串返回記錄

我試圖完全匹配該電子郵件並獲取匹配的記錄。我正在用IN或==謂詞來做這件事(對於單個或一列電子郵件)。

let query = CKQuery(recordType: "User", predicate: NSPredicate(format: "email IN %@", emails)) 
let query = CKQuery(recordType: "User", predicate: NSPredicate(format: "email == %@", "[email protected]")) 

我遇到問題的電子郵件是「[email protected]」,任何企圖檢索與此電子郵件返回0的記錄,但是如果我把它改爲「[email protected]」它將檢索OK。

最初,我認爲這是特殊字符,但其他字符串與他們工作正常。然後我假設長度,但其他更長的字符串正常工作。

有沒有其他人有這個問題?我很難相信CloudKit,卻不明白爲什麼它不能匹配這個字符串。

我問了一個類似的問題,但在詳細介紹之前,用戶能夠測試這個並獲得了與此字符串相同的結果。這篇文章更加簡潔,並且有重新創建的步驟。

+0

你是說,如果你改變了謂詞' 「電子郵件==%@」, 「[email protected]」'(無't'),那麼你得到回到預期的結果?如果是這樣的話,那麼你是否真的確信數據庫中的值實際上不是'julio_ukohgsp_chevez @ tfbnw.ne'? – rmaddy

+0

是的,我100%確定。這很奇怪。我檢查了很多次,並手動輸入。我可以嘗試你的特定字符串,但即使更換任何1個字符都可以工作。 – JDM

+0

我有完全相同的問題。你有沒有發現這件事? –

回答

0

試試這個:

let predicateString = "email IN '\(emails)'" 
let predicate = NSPredicate(format: predicateString)