четверг, 30 июля 2015 г.

8. Словари NSDictionary

Видео с уроком находятся здесь.
В этом уроке рассказывается о словарях NSDictionary.
Есть разные способы создания словаря:

 1.  С помощью initWithObjectsAndKeys.

    NSDictionary * dictionary=[[NSDictionary alloc] initWithObjectsAndKeys:
                               @"Petrov",@"lastName",
                               @"Vasiliy",@"name",
                               [NSNumber numberWithInteger:25],@"age", nil];
   
   2. С помощью 
dictionaryWithObjectsAndKeys.

 NSDictionary * dictionary2=[NSDictionary dictionaryWithObjectsAndKeys:@"Ivanov",@"lastName", @"Petya",@"name", nil];
 

 3. С использованием литералов:
    NSDictionary * dictionary3= @{@"name":@"Alex",@"lastName":@"Pupkin",@"age":@20};

Так же можно по разному организовать вывод словаря NSDictionary:

1. С помощью objectForKey:
    NSLog(@"%@. Dictionary count=%@",dictionary3,@([dictionary3 count]));
    NSLog(@"name=%@, lastName=%@, age=%@",[dictionary objectForKey:@"name"],[dictionary objectForKey:@"lastName"],@([[dictionary objectForKey:@"age"] integerValue ]));
   

    for (NSString *key in [dictionary3 allKeys]  ) {
        id obj=[dictionary3 objectForKey:key];
        NSLog(@"Key: %@. Value: %@.",key,obj);
    }


2. С помощью литералов:
     NSLog(@"Literals print: Name:%@, lastName: %@",dictionary2[@"name"],dictionary2[@"lastName"]);






Вот кстати наткнулся на наглядные примеры литералов.




В принципе код урока весь приведен, но на всякий случай выкладываю файлы проекта.

Домашнее задание к уроку 8 NSDictionary:
Уровень Ученик

1. Создайте класс студент со свойствами имя, фамилия и фраза приветствия.
2. Создайте 10 - 15 объектов этого класса.
3. Теперь мы создадим дикшинари типо школьный журнал, где ключ будет фамилия + имя, а значение сам студент.
4. Распечатайте дикшинари

Уровень Студент.

4. В цикле пройдемся по всем ключам в дикшинари и распечатаем имя и фамилию каждого студента + его фразу приветствия.

Уровень Мастер.

5. Чтобы сделать тоже самое но по какому-то порядку, отсортируйте массив ключей по возрастанию и выведите приветствие каждого студента из дикшинари, но уже по отсортированному списку.


Выполнил все задания.
Сортировка к 5 заданию делается следующей конструкцией:
     NSArray *array=[dictionary keysSortedByValueUsingComparator:^NSComparisonResult(id obj1, id obj2){return [[obj1 GetStudentID] compare:[obj2 GetStudentID]];}];

Исходные коды к ДЗ8 NSDictionary.


Комментариев нет:

Отправить комментарий