iOS. Приемы программирования. Вандад Нахавандипур. Читать онлайн. Newlib. NEWLIB.NET

Автор: Вандад Нахавандипур
Издательство: ""Издательство ""Питер""
Серия: Бестселлеры O’Reilly (Питер)
Жанр произведения: Программирование
Год издания: 2014
isbn: 978-5-496-01016-0
Скачать книгу
у нас существовал класс Person с именем и фамилией. Теперь мы хотим предоставить программистам возможность считывать имя, указывая индекс 0, а фамилию – указывая индекс 1. Все, что требуется сделать для этого, – объявить методы objectAtIndexedSubscript: и setObject: atIndexedSubscript: в заголовочном файле класса, а затем написать реализацию. Вот как мы объявляем два этих метода в заголовочном файле класса Person:

      – (id) objectAtIndexedSubscript:(NSUInteger)paramIndex;

      – (void) setObject:(id)paramObject atIndexedSubscript:(NSUInteger)paramIndex;

      Реализация также довольно проста. Мы берем индекс и оперируем им так, как это требуется в нашем классе. Ранее мы решили, что у имени должен быть индекс 0, а у фамилии – индекс 1. Итак, получаем индекс 0 для задания значения, присваиваем значение имени первому входящему объекту и т. д.:

      – (id) objectAtIndexedSubscript:(NSUInteger)paramIndex{

      switch (paramIndex){

      case 0:{

      return self.firstName;

      break;

      }

      case 1:{

      return self.lastName;

      break;

      }

      default:{

      [NSException raise:@"Invalid index" format: nil];

      }

      }

      return nil;

      }

      – (void) setObject:(id)paramObject atIndexedSubscript:(NSUInteger)paramIndex{

      switch (paramIndex){

      case 0:{

      self.firstName = paramObject;

      break;

      }

      case 1:{

      self.lastName = paramObject;

      break;

      }

      default:{

      [NSException raise:@"Invalid index" format: nil];

      }

      }

      }

      Теперь можно протестировать весь написанный ранее код вот так:

      Person *person = [Person new];

      person[kFirstNameKey] = @"Tim";

      person[kLastNameKey] = @"Cook";

      NSString *firstNameByKey = person[kFirstNameKey];

      NSString *lastNameByKey = person[kLastNameKey];

      NSString *firstNameByIndex = person[0];

      NSString *lastNameByIndex = person[1];

      if ([firstNameByKey isEqualToString: firstNameByIndex] &&

      [lastNameByKey isEqualToString: lastNameByIndex]){

      NSLog(@"Success");

      } else {

      NSLog(@"Something is not right");

      }

      Если вы правильно выполнили все шаги, описанные в этом разделе, то на консоли должно появиться значение Success.

      1.1. Отображение предупреждений с помощью UIAlertView

      Постановка задачи

      Вы хотите, чтобы у ваших пользователей отобразилось сообщение, которое будет оформлено как предупреждение (Alert). Такие сообщения можно применять, чтобы попросить пользователя подтвердить выбранное действие, запросить у него имя и пароль или просто предложить ввести какой-нибудь простой текст, который вы сможете использовать в своем приложении.

      Решение

      Воспользуйтесь UIAlertView.

      Обсуждение

      Если вы сами пользуетесь iOS, то вам определенно попадались виды-предупреждения. Пример такого вида показан на рис. 1.1.

      Рис. 1.1. Вид-предупреждение, сообщающий пользователю, что для работы требуется активное соединение с Интернетом

      Наилучший способ инициализации вида-предупреждения заключается, разумеется, в использовании его базового конструктора-инициализатора:

      – (void) viewDidAppear:(BOOL)paramAnimated{

      [super viewDidAppear: paramAnimated];

      UIAlertView *alertView = [[UIAlertView alloc]

      initWithTitle:@"Alert"

      message:@"You've been delivered an alert"

      delegate: