Objective-C: использование оператора if / else со значениями Plist - PullRequest
0 голосов
/ 24 мая 2011

Я уверен, что это действительно просто, но я не вижу, что я делаю неправильно.Может кто-нибудь помочь мне понять, где я иду не так, пожалуйста?Я работаю в Xcode.Я пытаюсь отобразить разные части моего представления в зависимости от значений, сохраненных в списке свойств.Если значение, присвоенное конкретному UITextField, равно нулю, то я хочу скрыть этот UITextField.Я пытаюсь сделать это так.брутто - это имя UITextField:

NSArray *array = [[NSArray alloc] initWithContentsOfFile:filePath];
gross.text = [array objectAtIndex:7];

if ([array objectAtIndex:7 == 0]) {
    gross.hidden = YES;
}
else {
    gross.hidden = NO;
}

[array release];

Я думаю, что проблема связана с тем, как я написал оператор if / else.Я знаю, что это действительно просто, но я не совсем понимаю, где я иду не так.Так что Ваша помощь очень ценится.

Ответы [ 4 ]

3 голосов
/ 24 мая 2011

Код должен читать:

   NSArray *array = [[NSArray alloc] initWithContentsOfFile:filePath];
   gross.text = [array objectAtIndex:7];

   if ([[array objectAtIndex:7] isEqualToString:@"0"]) {
        gross.hidden = YES;
   } else {
        gross.hidden = NO;
   }
   [array release];

Предполагается, что объект с индексом 7 вашего массива существует и является строкой. Если это на самом деле NSNumber, то вместо этого вы должны использовать условное

if ([[array objectAtIndex:7] intValue] == 0) {

Обратите внимание, что приведенная выше строка работает для строки, в которой текст содержит целое число, например @"0" или @"7".

2 голосов
/ 24 мая 2011

Если ваш массив содержит nsstring, то ваше условие должно выглядеть следующим образом:

if ([[array objectAtIndex:7] intValue] == 0) {
...

или

if ([[array objectAtIndex:7] isEqualToString:@"0"]) {

1-е условие будет работать также, если ваш массив содержит номера NSNumbers (маловероятно в вашем случаетак как вы назначаете элементы массива для свойства text), но потерпите неудачу, если строка не является допустимым числом - в этом случае intValue также вернет 0.

2-е условие будет работать нормально, если вы уверены, что ваши элементыявляются строками, и вы хотите точно сравнить с @ "0".


Ваше условие эквивалентно
if ([array objectAtIndex:0]) 

, потому что оператор == имеет больший приоритет и оценивается в 0. СравнениеЭлемент массива в 0 напрямую также не имеет смысла, так как NSArray не может содержать объекты nil в любом случае

2 голосов
/ 24 мая 2011
if ([[array objectAtIndex:7] intValue] == 0)

Первая ошибка - позиция закрытия ]. Во-вторых, у вас, вероятно, есть NSString в массиве, поскольку вы задали его в текстовом свойстве. Поэтому вам нужно преобразовать его в int с помощью intValue.

1 голос
/ 24 мая 2011

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

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