2016-10-05 16 views
0

NSPredicateを使用すると、ハードコードされた文字列は機能しますが、文字列変数は機能しません。例えばSwift NSPredicate文字列変数がデータを返さない

:デバッグ、levelIdをプリントアウトが正しいを返す場合

let predicate = NSPredicate(format: "%K = %@", "level_id", String(levelId)) 

このコードリターン結果:

let predicate = NSPredicate(format: "%K == %@", "level_id", "A2768F75-2293-4286-9ERA-D9888A823BF2") 

このコードは結果を返しません最初の例の文字列:"A2768F75-2293-4286-9ERA-D9888A823BF2"

ご協力いただきありがとうございます。

+2

に差===ここでの本当の違いは、「=」ではありませんし、「==あなたの述語で – Avt

+0

@Avt:NSPredicateで*違いはありません。 –

+0

'print(述語)'はヒントを与えることができます... –

答えて

-1

はlevelId何種類

let predicate = NSPredicate(format: "%K = %@", "level_id", levelId as! String) 
+0

申し訳ありませんが、私は否定的に私の答えを与えましたか? @マーティンR –

+1

私はあなたの答えに投票しませんでした。 –

1

これで試してみてください? Swiftの文字列補間は、Printableプロトコルを実装する項目を調べます。したがって、あなたの型はString型のプロパティdescriptionまたはdebugDescriptionを持っているかもしれません。その場合、String型にキャストしてもあなたの望むものは得られません。

2つの値を比較するテストを試してみます。たとえば、"A2768F75-2293-4286-9ERA-D9888A823BF2" == String(levelId)ですか? levelId.descriptionはどうですか?

1

=、==

左側の発現は、右側の式に等しいです。それ大文字と小文字を区別しない

そうであれば作る

しかし==、それを記述するのほとんどは、述語

関連する問題