2016-04-17 15 views
2

In meinem Projekt, mit einem CloudKit Record Type "User" (ich habe mit anderen Record Type Namen auch getestet), erstelle ich einen Datensatz mit einem E-Mail-Feld.Cloudkit gibt Datensätze mit einer bestimmten Zeichenfolge zurück

Ich versuche, diese E-Mail genau zu vergleichen und Datensätze abzurufen, die übereinstimmen. Ich mache das mit einem IN oder == Prädikat (für einzelne oder eine Liste von E-Mails).

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

Die E-Mail ich Probleme mit bin mit ist „[email protected]“, jeder Versuch, einen Datensatz mit dieser E-Mail 0 zurück, jedoch abrufen, wenn ich es ändern Sie ihn auf „[email protected]“ wird OK erhalten.

Zuerst nahm ich an, dass es die Sonderzeichen waren, aber andere Saiten mit ihnen funktionieren gut. Dann nehme ich die Länge an, aber andere längere Saiten funktionieren gut.

Hat jemand anderes dieses Problem? Es fällt mir schwer, CloudKit zu vertrauen, ohne zu verstehen, warum diese Zeichenfolge nicht gefunden werden kann.

Ich stellte eine ähnliche Frage, aber bevor ich die Details hatte, konnte ein Benutzer dies testen und erzielte die gleichen Ergebnisse mit dieser Zeichenfolge. Dieser Beitrag ist viel prägnanter und hat Schritte, um neu zu erstellen.

+0

Sie sagen, dass, wenn Sie das Prädikat ändern ' "E-Mail ==% @", "[email protected]"' (kein 't'), dann bekommen Sie zurück das erwartete Ergebnis? Wenn das der Fall ist, dann bist du * wirklich * sicher, dass der Wert in der Datenbank nicht wirklich 'julio_ukohgsp_chevez @ tfbnw.ne' ist? – rmaddy

+0

Ja, ich bin 100% sicher. Es ist bizarr. Ich habe es mehrmals überprüft und manuell eingegeben. Ich kann Ihre spezifische Zeichenfolge versuchen, aber sogar das Ersetzen von 1 Zeichen hat funktioniert. – JDM

+0

Ich habe genau das gleiche Problem. Hast du etwas dazu gefunden? –

Antwort

0

Try this:

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