Reading a text field and comparing to an array object?
I have setup an array full of words as objects. I am trying then trying to compare what the user enters in a uitextfield to an object in the array to see if they match.
I have captured a pointer to the uitextview in one of the delegate methods, however I cannot compare the text field contents to the object in the array. I assume that this is because one is a string and one is an array object ? Do I need to cast one of the 开发者_运维百科variables somehow ?
Thanks
Martin
Assuming you want to test whether the user's input matches any member of your array, you should do something like this:
NSString *input = textField.text;
BOOL wordFound = NO;
for(NSString *candidate in self.possibleWordsArray) {
if( [input isEqual:candidate] ) {
wordFound = YES;
break;
}
}
if(wordFound) {
...
}
else {
...
}
Notes:
We are comparing the input string against each member of the array in turn. This gives an explicit meaning to the idea of matching a string against an array.
When we find a matching string, we set the flag
wordFound
toYES
and then stop searching (using thebreak
statement). If no match is found, thewordFound
flag remains at its original value ofNO
.Always use
isEqual
to test equality between strings, never==
; the later will usually work, but then break occasionally. This is because==
only tests whether the two pointers point to the same memory location, whereas you might have two copies of an identical string in different memory locations.
精彩评论