2012-02-26 1 views
-2

Эй, я новичок в кодировании xcode, поэтому я изучаю себя.ожидаемое выражение перед '||' token в xcode

Я пишу этот код, и появляются ошибки, указывающие на первое из "|" «ОЖИДАЕМЫЙ ВЫРАЖЕНИЕ ДО« || » ЗНАК. это мое, если заявление:

if (([email protected]"")) || ([secretPin isEqual:null]) 

И Нулевой райт?

ТАК любая помощь?

+0

Добро пожаловать в SO. Добавьте тег языка также здесь, в ваших сообщениях. – Mahesh

+0

Hehehehe да, человек так работает в моем мире, как пила: P: P – Ram

ответ

2

Несколько проблем:

  • В С (и Objective-C) один знак равенства, как вы использовали для задания, не сравнение
  • Во-вторых, правильный способ сделать сравнение строк в цель -C заключается в использовании NSString методу isEqualToString:
  • Objective-C использует nil вместо null
  • в Objective-C указатель равен нулю, что будет оценивать ложь, поэтому вместо того, чтобы использовать isEqual вы можете просто проверить !secretPin (который возвращает истину в secretPin равна нулю)
  • Как уже отмечалось, ваши скобки неправильно установлены в вашей условной

Так более правильное перезапись:

if ([self.nametextfield.text isEqualToString:@""] || !secretPin) { 
    // do something 
} 

EDIT:

Также обратите внимание, что я редактировал этот пример так, что nametextfield теперь свойство self (где self в этом случае ваш View Controller). Ошибка «неожиданного идентификатора» заставляет меня думать, что вы не подключили свой объект текстового поля (созданный в вашем раскадровке или файле xib) правильно. Вы должны быть уверены, что вы объявляете текстовое поле как свойство вашего контроллера представления, как это в заголовке файла (.h):

@property (nonatomic, weak) IBOutlet UITextField* nametextfield; 

и синтезировать свойства в файле реализации (.m):

@synthesize nametextfield; 

, а затем присоедините UITextField в своем раскадровке или xib к этому IBOutlet.

+0

Jonkroll я ценю вашу помощь. Но мое поле nametextfield не является NSString - это UItextfield, поэтому я использую nametextfield.text = @ "" и появляются 3 ошибки: 1-Ожидаемый идентификатор. 2-confused предыдущими ошибками, спасение. 3-ожидаемый ':' перед "]" токеном. – Ram

+0

jonkroll я создаю переменную с именем Empty типа NSString и i give'it nametextfield.text, поэтому мой код работает правильно. NSString * Empty = nametextfield.text; if ([Empty isEqualToString: @ ""] ||! SecretPin) { – Ram

+0

Увы, вы правы, я пропустил свойство «.text» в моем примере кода. Кроме того, ошибка «Ожидаемый идентификатор» заставляет меня думать, что вы не подключили UITextField к вашему контроллеру просмотра правильно. См. Мое изменение к моему ответу выше. – jonkroll

0

Я предполагаю, что это Цель-C ?? Если да, то у вас есть неуместны скобка:

if (([email protected]"") || ([secretPin isEqual:null])) 

Но также, [email protected]"" неправильно по двум пунктам, а стандартная Objective-C нулевое значение указателя nil.

0

Вам даже не нужны парсеры для выражений. Это должно быть

if (nametextfield.text = @"" || [secretPin isEqual:null]) 

Это компилируется для меня и работает с фиктивными данными.