Добро пожаловать в шестую главу нашего путешествия по Objective-C! В этой главе мы познакомимся с фреймворком Foundation — основой для разработки приложений на iOS и macOS. Этот фреймворк предоставляет множество полезных классов и функций, которые облегчают работу со строками, массивами, словарями, датами и многим другим. Не волнуйтесь, мы объясним все простым и понятным языком, чтобы вы могли легко во всем разобраться.
Создание строки с помощью литерала:
NSString *greeting = @"Привет, мир!";
@
перед кавычками, чтобы указать, что это строка NSString.Создание строки с помощью метода:
NSString *message = [NSString stringWithFormat:@"У вас %d новых сообщений", 5];
stringWithFormat:
позволяет создавать строки с форматированием, аналогично printf
в C.Получение длины строки:
NSUInteger length = [greeting length];
Извлечение символа по индексу:
unichar character = [greeting characterAtIndex:0]; // Первый символ
Конкатенация строк:
NSString *fullName = [firstName stringByAppendingString:lastName];
Сравнение строк:
BOOL isEqual = [string1 isEqualToString:string2];
Преобразование в верхний или нижний регистр:
NSString *upperCase = [greeting uppercaseString];
NSString *lowerCase = [greeting lowercaseString];
Проверка на префикс или суффикс:
BOOL startsWithHello = [greeting hasPrefix:@"Привет"];
BOOL endsWithWorld = [greeting hasSuffix:@"мир!"];
Поиск подстроки:
NSRange range = [greeting rangeOfString:@"мир"];
if (range.location != NSNotFound) {
NSLog(@"Слово 'мир' найдено в строке");
}
Создание массива:
NSArray *fruits = @[@"Яблоко", @"Банан", @"Апельсин"];
Доступ к элементам:
NSString *firstFruit = fruits[0]; // "Яблоко"
Получение количества элементов:
NSUInteger count = [fruits count];
Перебор массива:
for (NSString *fruit in fruits) {
NSLog(@"%@", fruit);
}
Создание изменяемого массива:
NSMutableArray *numbers = [NSMutableArray arrayWithObjects:@1, @2, @3, nil];
Добавление элементов:
[numbers addObject:@4];
Удаление элементов:
[numbers removeObjectAtIndex:0]; // Удаляет первый элемент
Вставка элементов:
[numbers insertObject:@0 atIndex:0]; // Вставляет 0 на первое место
Замена элементов:
[numbers replaceObjectAtIndex:1 withObject:@99];
Создание словаря:
NSDictionary *person = @{
@"name": @"Иван",
@"age": @30,
@"city": @"Москва"
};
Доступ к значениям по ключу:
NSString *name = person[@"name"];
NSNumber *age = person[@"age"];
Получение всех ключей или значений:
NSArray *keys = [person allKeys];
NSArray *values = [person allValues];
Создание изменяемого словаря:
NSMutableDictionary *userInfo = [NSMutableDictionary dictionary];
Добавление пар "ключ-значение":
[userInfo setObject:@"Мария" forKey:@"firstName"];
[userInfo setObject:@"Иванова" forKey:@"lastName"];
Удаление значений по ключу:
[userInfo removeObjectForKey:@"lastName"];
Изменение значений:
[userInfo setObject:@"Петрова" forKey:@"lastName"];
Создание набора:
NSSet *uniqueNumbers = [NSSet setWithObjects:@1, @2, @3, @1, @2, nil];
Проверка наличия элемента:
BOOL containsTwo = [uniqueNumbers containsObject:@2];
Получение количества элементов:
NSUInteger count = [uniqueNumbers count];
Создание изменяемого набора:
NSMutableSet *mutableSet = [NSMutableSet set];
Добавление и удаление элементов:
[mutableSet addObject:@"Красный"];
[mutableSet addObject:@"Зеленый"];
[mutableSet removeObject:@"Красный"];
Операции с наборами:
Объединение: объединяет два набора.
[mutableSet unionSet:anotherSet];
Пересечение: оставляет только общие элементы.
[mutableSet intersectSet:anotherSet];
Разность: удаляет элементы, содержащиеся в другом наборе.
[mutableSet minusSet:anotherSet];
Создание текущей даты:
NSDate *now = [NSDate date];
Создание даты с определенным интервалом:
NSDate *tomorrow = [NSDate dateWithTimeIntervalSinceNow:24*60*60]; // Через 24 часа
Создание форматтера:
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd.MM.yyyy HH:mm:ss"];
Преобразование даты в строку:
NSString *dateString = [formatter stringFromDate:now];
NSLog(@"Текущая дата и время: %@", dateString);
Преобразование строки в дату:
NSString *input = @"31.12.2023 23:59:59";
NSDate *date = [formatter dateFromString:input];
Пример:
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay) fromDate:now];
NSInteger year = [components year];
NSInteger month = [components month];
NSInteger day = [components day];
NSLog(@"Год: %ld, Месяц: %ld, День: %ld", (long)year, (long)month, (long)day);
NSFileManager *fileManager = [NSFileManager defaultManager];
Получение пути к директории документов:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths firstObject];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"data.txt"];
BOOL fileExists = [fileManager fileExistsAtPath:filePath];
NSString *newDirectory = [documentsDirectory stringByAppendingPathComponent:@"NewFolder"];
NSError *error;
BOOL success = [fileManager createDirectoryAtPath:newDirectory withIntermediateDirectories:YES attributes:nil error:&error];
if (success) {
NSLog(@"Директория создана");
} else {
NSLog(@"Ошибка создания директории: %@", error.localizedDescription);
}
NSString *content = @"Привет, файл!";
NSData *data = [content dataUsingEncoding:NSUTF8StringEncoding];
BOOL success = [fileManager createFileAtPath:filePath contents:data attributes:nil];
if (success) {
NSLog(@"Файл создан");
} else {
NSLog(@"Ошибка создания файла");
}
NSData *data = [fileManager contentsAtPath:filePath];
NSString *content = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"Содержимое файла: %@", content);
NSError *error;
BOOL success = [fileManager removeItemAtPath:filePath error:&error];
if (success) {
NSLog(@"Файл удален");
} else {
NSLog(@"Ошибка удаления файла: %@", error.localizedDescription);
}
componentsSeparatedByString:
.Решение:
NSString *fullName = @"Иван Иванов";
NSArray *components = [fullName componentsSeparatedByString:@" "];
NSString *firstName = components[0];
NSString *lastName = components[1];
NSLog(@"Имя: %@", firstName);
NSLog(@"Фамилия: %@", lastName);
Решение:
NSMutableArray *numbers = [NSMutableArray arrayWithObjects:@1, @2, @3, @4, @5, nil];
[numbers addObject:@6];
[numbers removeObject:@2];
[numbers replaceObjectAtIndex:0 withObject:@0];
NSLog(@"Массив: %@", numbers);
Решение:
NSMutableDictionary *book = [NSMutableDictionary dictionaryWithDictionary:@{
@"title": @"Мастер и Маргарита",
@"author": @"Михаил Булгаков",
@"year": @1967
}];
[book setObject:@"Роман" forKey:@"genre"];
[book setObject:@2023 forKey:@"year"];
for (NSString *key in book) {
NSLog(@"%@: %@", key, book[key]);
}
Решение:
NSDate *now = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd MMMM yyyy г., HH:mm"];
NSString *dateString = [formatter stringFromDate:now];
NSLog(@"%@", dateString);
Отличная работа! Вы познакомились с основными классами фреймворка Foundation, которые являются фундаментальными для разработки приложений на Objective-C. Теперь вы знаете, как работать со строками, массивами, словарями, наборами, датами и файловой системой. Эти знания помогут вам создавать более функциональные и мощные приложения.
В следующей главе мы продолжим наше путешествие и познакомимся с работой с данными: загрузкой из интернета, парсингом JSON, сохранением данных и многим другим. Это поможет вам создавать приложения, которые взаимодействуют с внешним миром и предоставляют пользователю актуальную информацию.
Не забывайте практиковаться! Чем больше вы будете писать код и экспериментировать, тем лучше будете понимать материал и тем увереннее будете чувствовать себя в роли разработчика.
Удачи и до встречи в следующей главе!
Просмотров: 44