Почему я не могу определить значения простых строковых ключей в базе данных (основные данные) - PullRequest
0 голосов
/ 09 сентября 2011

Я новичок, поэтому прошу прощения, если я упустил что-то очевидное.

Я пытаюсь написать приложение в Xcode 4, чтобы получать статистику для моей местной спортивной команды.

Это соответствующая деталь проблемной области моей программы:

NSError *error;

NSArray *games = [context executeFetchRequest:fetchRequest error:&error];

if (games == nil) {
    NSLog(@"There was an error!");
}

int noOfBatOuts = games.count;
int noOfNotOuts=0;

for (NSManagedObject *oneMatch in games) {

     if ([oneMatch valueForKey:@"batOut"]==@"NO") {
            noOfBatOuts = noOfBatOuts - 1;
            noOfNotOuts = noOfNotOuts + 1;
            NSLog(@"Not Out!");
     }

     NSLog(@"How out %@",[oneMatch valueForKey:@"batOut"]);

}

notOuts.text=[NSString stringWithFormat:@"%d",(noOfNotOuts)];

NSLog(@"No of Not Outs is %@",notOuts.text);

Когда я работаю с данными, у которых есть строка not out - НЕТ, - NSLog (@ "Not Out!") Никогда не вызывается, а окончательный NSLog (@ "No of Not Outs ...) сообщает ноль. Однако Я знаю, что данные есть, и они идентифицированы в середине NSLog (@ "How Out ....).

Я начинаю рвать на себе волосы в отчаянии и не знаю, что еще ответить. Кто-нибудь может помочь, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 09 сентября 2011

Нельзя сравнивать строки с ==.Использовать NSString isEqualToString:

0 голосов
/ 09 сентября 2011

Я бы предположил, что batOut является логическим, а не строковым типом, и в этом случае вам следует проверять правильность, а не равенство строк.

Если batOut действительно строка, то вы все равно не можете сравнивать строки таким образом. Вам нужно использовать isEqual: или isEqualToString:. Например:

 if ([[oneMatch valueForKey:@"batOut"] isEqual:@"NO"]) {

Обычно вы бы использовали isEqualToString: для сравнения строк, но -valueForKey: - это id, поэтому isEqual: безопаснее.

Оператор == проверяет, что два указателя имеют одинаковое значение. Две строки могут иметь одинаковое содержимое, но не могут храниться в одной и той же памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...