swift - Checking if an array contains a string -
i'm trying evaluate if entered string partially matches item in array. when use following method in playgrounds seems work properly. however, when use exact same method in xcode 9.0 beta 6 (9m214v) doesn't return correct answer.
func isvalid(_ item: string) -> bool { let whitelist = ["https://apple.com","https://facebook.com","https://stackoverflow.com"] return whitelist.contains(where: {$0 <= item ? true : false }) } there's anomalies when passed in "https://twitter.com" it'll return true. nuts? , while i'm here, have different approach solve problem?
theres anomalies when passed in "https://twitter.com" it'll return true.
whether version of swift 3 or 4, based on code snippet should same true result! why?
because logic of contains(where:) of doing comparison related logic of equality of given elements, i,e cannot use contains array of non-equatable elements. make more clear:
"https://apple.com" <= "https://twitter.com" "https://facebook.com" <= "https://twitter.com" "https://stackoverflow.com" <= "https://twitter.com" the result true all statements ('t' character greater 'a', 'f' , 's').
thus:
"https://zwebsite" <= "https://twitter.com" would returns false ('t' less 'z').
however, expected result, implement function this:
func isvalid(_ item: string) -> bool { let whitelist = ["https://apple.com","https://facebook.com","https://stackoverflow.com"] return whitelist.contains { $0 == item } } or shorter contains:
return whitelist.contains(item) which leads let
isvalid("https://twitter.com") to returns false.
Comments
Post a Comment