2016-07-21 3 views
0

Ich versuche, Felder in CloudKit abzurufen, die anders als Null sind und auch eine bestimmte Telefonnummer (zur gleichen Zeit, natürlich). Aber ich bin eine harte Zeit versucht, dies zu tun ... Das ist mein Code:Wie stelle ich NSPredate ein, um nach anderen Feldern als nil zu suchen?

let predicate = Predicate(format: "phone == %@ && careTakerId != %@", tel, "") 

Wenn existiert, druckt es ein „Benutzer existiert“ und es wird Druck es jedes verdammte Mal! Kann mir jemand sagen, ob ich das Prädikat richtig mache? Danke

+0

Beschreiben Sie Ihr Problem klarer. Ich verstehe nicht, was Sie mit _Wenn es existiert, es druckt ein "Benutzer existiert" und es druckt es jede verdammte Zeit! _. Wenn Ihr 'Prädikat' ein unerwartetes Ergebnis generiert, zeigen Sie Beispieldaten und was Sie mit diesen Daten erwarten. – OOPer

+0

Ich habe einen Datensatztyp Benutzer in CloudKit, und es hat ein Feldtelefon und eine weitere careTakerId. Was ich will ist, nach denen zu suchen, die eine Telefonnummer gleich * tel * und eine careTakerId anders als Null war. Aber mein Problem ist, dass sogar diejenigen Benutzer, die eine nil careTakerId haben, gedruckt werden –

+0

Ich sehe, dass ich etwas posten werde, das Sie als Antwort versuchen sollten. – OOPer

Antwort

0

Sie haben es folgendermaßen gemacht:

let predicate = Predicate(format: "phone == %@ && careTakerId != ''", tel) 

Wenn Sie mit versuchen! = Null Xcode wird abstürzen und sagen, es ist kein gültiges Prädikat!

0

Vielleicht sollten Sie versuchen, diese:

let predicate = Predicate(format: "phone == %@ && careTakerId != nil", tel) 

Dies ist für Sie nützlich sein können:

let predicate = Predicate(format: "phone == %@ && careTakerId.length > 0", tel) 

(Letzteres falsch wird, wenn careTakerId"" oder nil ist.)

+0

Ich versuchte sie beide, aber keiner von ihnen scheint für mich zu arbeiten ... Der erste gibt mir diesen Fehler: "Ungültiges Prädikat: phone ==" 2133925574 "UND careTakerId! = Nil (Fehler Domain = CKErrorDomain Code = 12" Ungültiger rechter Ausdruck in : ist kein Funktionsausdruck "' Der zweite stürzt nicht ab, aber das Prädikat filtert auch nicht richtig, aber danke für deine Aufmerksamkeit sowieso –

+0

Sorry, ich habe vermisst dass Sie "Predicate" mit CloudKit verwenden. Ich werde berichten, wenn ich etwas nützliches finde. – OOPer

+0

Ich habe es bekommen! Ich konnte überprüfen, ob es anders ist als nil, indem ich Folgendes tue: 'let Prädikat = Prädikat (Format:" phone ==% @ && careTakerId! = '' ", tel)' –

Verwandte Themen