ожидаемое выражение перед '||' токен в xcode - PullRequest
0 голосов
/ 26 февраля 2012

Эй, я новичок в коде xcode, поэтому я учусь сам.

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

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

А ноль - это Райт?

ТАК какая помощь?

Ответы [ 3 ]

2 голосов
/ 26 февраля 2012

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

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

Итак, более корректная перезапись:

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

РЕДАКТИРОВАТЬ:

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

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

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

@synthesize nametextfield;

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

0 голосов
/ 26 февраля 2012

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

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

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

0 голосов
/ 26 февраля 2012

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

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

Но также, nametextfield.text=@"" неверно по двум причинам, и стандартное значение нулевого указателя Objective-C равно nil.

...