SlideShare a Scribd company logo
iOS Internship 2014
NSString+NSMutableString
Максим Забелин
NSString+NsMutableString
C string
const char *cString = "Hello world";
NSString
NSString *objCString = @"Hello world";
C string VS NSString
Foundation
NSString+NsMutableString
int year = 2014;
NSString *message = [NSString stringWithFormat: @"Today is year %d", year];
// Today is year 2014
NSString *anotherMessage =
[NSString stringWithFormat: @"Previous message was '%@'", message];
// Previous message was 'Today is year 2014'
это, наверное, самый часто используемый метод у строк
- stringWithFormat:
Foundation
NSString+NsMutableString
Точно такие же, как у printf
+ %@ для объектов
Основные:
%d, %i - для int
%f - для float
%s - для строки C
Format specifiers
Foundation
NSString+NsMutableString
NSRange
typedef struct _NSRange {
NSUInteger location;
NSUInteger length;
} NSRange;
NSRange используется в методах, которые что-то ищут или заменяют.
Если ничего найти не удалось, они возвращают NSNotFound в location
Foundation
NSString+NsMutableString
NSRange range = [@"Porsche Carrera" rangeOfString: @"Car"];
// {.location = 8, .length = 3}
Поиск подстроки
Foundation
NSString+NsMutableString
int length = [@"Hello world" length];
// 11
unichar ch = [@"Abcdef" characterAtIndex:3];
NSLog(@"%c", ch); // d
но они довольно редко используются, особенно второй
… и еще пара методов
Foundation
NSString+NsMutableString
NSString *name = @"Steve";
NSString *surname = @"Jobs";
NSString *space = @" ";
NSString *fullName = [[name stringByAppendingString:space]
stringByAppendingString:surname];
// Steve Jobs
NSString *king = @"King";
NSString *otherFullName = [[fullName stringByReplacingOccurrencesOfString:surname
withString:king]
stringByReplacingOccurrencesOfString:space
withString:@"n "];
// Steven King
методы, создающие новую строку из имеющейся, обычно начинаются со stringBy...
Создание новых строк на основе имеющихся
Foundation
NSString+NsMutableString
NSString *car = @"Porsche Carrera";
NSString *model = [car substringFromIndex:8]; //Carrera
Получение подстроки
Foundation
NSString+NsMutableString
Смена регистра
NSString *st = @"sTRinG";
NSString *lower = [st lowercaseString]; // string
NSString *upper = [st uppercaseString]; // STRING
NSString *capital = [st capitalizedString]; // String
Foundation
NSString+NsMutableString
NSMutableString
Строка NSString неизменяема.
Однако, у NSString есть подкласс
NSMutableString - для изменяемых строк.
Foundation
NSString+NsMutableString
- (void)insertString:(NSString *)aString atIndex:(NSUInteger)loc;
- (void)deleteCharactersInRange:(NSRange)range;
- (void)appendString:(NSString *)aString;
- (void)appendFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2);
- (void)setString:(NSString *)aString;
Дополнительные методы
Foundation
NSString+NsMutableString
NSMutableString *st = @"Mutable string";
[st appendString:@" ****"];
Пример
Foundation
NSString+NsMutableString
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Attempt to
mutate immutable object with appendString:'
Пример
Foundation
NSString+NsMutableString
NSMutableString *st = [@"Mutable string" mutableCopy];
или так:
NSString *st = [[NSMutableString alloc] initWithString: @"Mutable string"];
Правильная реализация

More Related Content

PDF
mri ruby GC
PDF
05 ns dictionary
PDF
Mongo db aggregation
PDF
пабсаб презентейшн
PDF
09 ns data
PPT
Boeing 747-8F AirBridge Cargo
PDF
карты, навигация
PDF
iOS-02-Паттерны ООП
mri ruby GC
05 ns dictionary
Mongo db aggregation
пабсаб презентейшн
09 ns data
Boeing 747-8F AirBridge Cargo
карты, навигация
iOS-02-Паттерны ООП

Viewers also liked (20)

PDF
iOS-01-Основы Objective-C
PPTX
Box model, display and position (HTML5 тема 07 - box model, display position)
PDF
07 ns value
PDF
06 ns set
PDF
11 ns copying, subscripting, fast enumeration
PDF
хранение данных
PDF
Работа с соцсетями (Lecture 19 – social)
PDF
iOS-07_1 Objective-C Blocks
PPTX
Rest
PDF
04 ns array
PDF
шаринг
PDF
мультимедиа
PDF
обработка событий
PDF
iOS-05_2-UIKit
PDF
03 коллекции
PDF
10 ns error
PDF
iOS-07_2 Multithreading
PDF
работа с сетью
PDF
Работа с геоданными (Lecture 18 – geolocation)
PDF
iOS-05_1-UIKit
iOS-01-Основы Objective-C
Box model, display and position (HTML5 тема 07 - box model, display position)
07 ns value
06 ns set
11 ns copying, subscripting, fast enumeration
хранение данных
Работа с соцсетями (Lecture 19 – social)
iOS-07_1 Objective-C Blocks
Rest
04 ns array
шаринг
мультимедиа
обработка событий
iOS-05_2-UIKit
03 коллекции
10 ns error
iOS-07_2 Multithreading
работа с сетью
Работа с геоданными (Lecture 18 – geolocation)
iOS-05_1-UIKit
Ad

Similar to 02 ns string (10)

PDF
msumobi2. Лекция 2
PDF
Школа-студия разработки приложений для iOS. Лекция 1. Objective-C
PDF
Интуит. Разработка приложений для iOS. Лекция 8. Работа с данными
PDF
Интуит. Разработка приложений для iOS. Лекция 2. Objective-C
PDF
Перспективы функционального подхода
PDF
7 кашкута
PDF
msumobi2. Лекция 1
KEY
Курсы по мобильной разработке. 1 лекция. Знакомство с iOS
PDF
Active Record for CoreData
PDF
Встреча №8. NSIncrementalStore, или как заставить Core Data варить ваш собств...
msumobi2. Лекция 2
Школа-студия разработки приложений для iOS. Лекция 1. Objective-C
Интуит. Разработка приложений для iOS. Лекция 8. Работа с данными
Интуит. Разработка приложений для iOS. Лекция 2. Objective-C
Перспективы функционального подхода
7 кашкута
msumobi2. Лекция 1
Курсы по мобильной разработке. 1 лекция. Знакомство с iOS
Active Record for CoreData
Встреча №8. NSIncrementalStore, или как заставить Core Data варить ваш собств...
Ad

More from Noveo (20)

PPTX
Гуманитарные специальности в IT-индустрии
PPTX
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
PPTX
Стилизация текста (HTML5 тема 05 - стилизация текста)
PPTX
Семантика текста (HTML5 тема 04 - семантика текста)
PPTX
Основы CSS (HTML5 тема 02 - основы CSS)
PPTX
Структура HTML документа (HTML5 тема 01 - структура html документа)
PPTX
Yii2
PPTX
Сессии и авторизация
PPTX
PHP basic
PPTX
PHP Advanced
PPTX
PHP and MySQL
PPTX
MySQL
PDF
Push Notifications (Lecture 22 – push notifications)
PDF
RxJava+RxAndroid (Lecture 20 – rx java)
PDF
Animations (Lecture 17 – animations)
PDF
Toolbar (Lecture 16 – toolbar)
PDF
Material Design (Lecture 15 – material design)
PDF
Database (Lecture 14 – database)
PDF
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
PDF
Многопоточность, работа с сетью (Lecture 12 – multithreading, network)
Гуманитарные специальности в IT-индустрии
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Стилизация текста (HTML5 тема 05 - стилизация текста)
Семантика текста (HTML5 тема 04 - семантика текста)
Основы CSS (HTML5 тема 02 - основы CSS)
Структура HTML документа (HTML5 тема 01 - структура html документа)
Yii2
Сессии и авторизация
PHP basic
PHP Advanced
PHP and MySQL
MySQL
Push Notifications (Lecture 22 – push notifications)
RxJava+RxAndroid (Lecture 20 – rx java)
Animations (Lecture 17 – animations)
Toolbar (Lecture 16 – toolbar)
Material Design (Lecture 15 – material design)
Database (Lecture 14 – database)
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Многопоточность, работа с сетью (Lecture 12 – multithreading, network)

02 ns string