は、例えば代わりに%@
NSPredicate
のそれらに名前を付けることにより、NSPredicateに複数のパラメータを渡すことが可能です[スウィフト中]の名前で、「複数」のパラメータを渡し、私はdirectly-passed
パラメータme
とyou
を持っています。
public static func ConversationByUserId(userId : String) -> [Message] {
// Either Created By me and sent to you.
// Or, created by you and sent to me
let me = UserRepo.GetLoggedInUser()?.id
var format = "(createdBy == '" + me! + "' && createdTo == '" + userId + "') "
format += " || (createdBy == '" + userId + "' && createdTo == '" + me! + "') "
print(format)
//prints: (createdBy == '1' && createdTo == '5') || (createdBy == '5' && createdTo == '1')
let predicate = NSPredicate(format: format)
return Filter(predicate);
}
注:Filter(predicate)
は操作を実行し、結果を返します。ここまでは順調ですね。私は期待される結果を得る。しかし、これはSQL攻撃のような問題を抱えている可能性があります。
私は以下のようなことをすることができますか?これまでのところ、私が達成している
var format = "(createdBy == @me && createdTo == @you) "
format += " || (createdBy == @you && createdTo == @me) "
let predicate = NSPredicate(format: format, [ "me" : me, "you" : you ])
は次のとおりです。
format = "(createdBy == %@ && createdTo == %@) "
format += " || (createdBy == %@ && createdTo == %@) "
let predicate = NSPredicate(format: format, me!, you, me!, you)
NSComparisonPredicateを使用してSQLインジェクションを防止する方法については、以下を参照してください。http://stackoverflow.com/questions/3076894/how-to-prevent-sql-injection-in-core-data – Moshe
@Moshe、Make not make私に感覚。迅速に回答を投稿することをご存じですか? – tika