Главная » iPhone, Objective-C, Программирование для iOS и MacOS » NSMutableArray Objective-C

0

Массивы делятся на две разновидности:

•  Экземпляр NSArray создастся с конкретным списком указателей. Добавление и удаление указателей в таких массивах запрещено.

•  Экземпляр NSMutableArray похож на NSArray, но он поддерживает добавление и

удаление указателей. (NSMutableArray является субклассом NSArray. Субклассы более подробно рассматриваются в главе 18.)

Внесите изменения в программу так, чтобы в ней использовался экземпляр

NSMutableArray и методы класса NSMutableArray :

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])

{

@autoreleasepool {

// создание трех объектов NSDate NSDate *now = [NSDate date];

NSDate *tomorrow = [now dateByAddingTimeInterval:24.0 * 60.0 * 60.0]; NSDate *yesterday = [now dateByAddingTimeInterval:-­‐24.0 * 60.0 * 60.0];

// создание пустого массива

NSMutableArray *dateList = [NSMutableArray array];

// включение дат в массив [dateList addObject:now]; [dateList addObject:tomorrow];

// P!t "ester#a" at the beginning of the tist R#ate-ist insert:b;e tU"ester#a" atIn#eIU&S;

for  2ADate  "d  in dateDist%  &

2ADog [‘(ere is a date: Q[‘! d%,

.

// Wemove "ester#a"

R#ate-ist remove:b;e tLtIn#eIU&S;

N6-og(T"Now the first #ate is 0T"1 R#ate-ist ob;e tLtIn#eIU&S);

.

return -,

.

Упражнения

Создайте новую программу командной строки Foundation с именем Groceries. Создайте пустой объект NSMutableArray, добавьте в него несколько элементов, описывающих покупки в магазине. (Элементы тоже необходимо создать.) Наконец, используйте синтаксис быстрого перечисления для вывода списка покупок.

Следующая задача будет посложнее. Прочитайте следующую программу для

поиска распространенных имен собственных, содержащих две смежные буквы А:

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[])

{

@autoreleasepool {

// файл читается в виде одной большой строки

// без обработки возможных ошибок

NSString *nameString = [NSString stringWithContentsOfFile:@"/usr/share/ dict/propernames" encoding:NSUTF8StringEncoding error:NULL];

// разбиваем файл на массив строк

NSArray *names = [nameString componentsSeparatedByString:@"\n"];

// перебор строк, содержащихся в массиве for (NSString *n in names) {

// поиск подстроки "аа" без учета регистра символов

NSRange r = [n rangeOfString: @"AA" options:NSCaseInsensitive Search];

// нашли?

if (r.location != NSNotFound) { NSLog (@"%@", п);

}}}

return 0;

}

Файл  /usr/share/dict/propernames содержит   список   распространенных имен  собственных,  файл  /usr/share/dict/words –  список  слов  (то  есть  имен

собственных и нарицательных). Напишите на базе приведенной программы другую – для поиска имен собственных, которые одновременно являются нарицательными («Glen» – мужское имя, и «glen» – узкая лощина). В файле words имена собственные записаны с прописной буквы.

При упорядочении строк компьютер обычно считает, что символы верхнего

регистра предшествуют символам нижнего регистра. Для сравнения без учета регистра используется метод caselnsensitiveCompare:

NSString *а = @"АВС"; NSString *Ь = @"аЬс";

if ([а caselnsensitiveCompare:b] == NSOrderedSame) { NSLog(@"a and Ь аге equal");

}

if ([а caselnsensitiveCompare:b] == NSOrderedAscending){ NSLog(@"a comes before b");

}

if ([а caselnsensitiveCompare:b] == NSOrderedDescending){ NSLog(@"b comes before а");

}

Источник: Аарон Хилегас, «Objective-C. Программирование для iOS и MacOS», 2012 г.

По теме:

  • Комментарии