21 мар. 2014 г.

Конвертация NSString в массив символов

Один из способов сделать это - просто получить один символ подстроки из заданной полной строки:

NSString *s = @"Hello World";
int i;
NSMutableArray *m = [[NSMutableArray alloc] init];
 
for (i = 0;i < [s length]; i++) {
    [m addObject:[s substringWithRange:NSMakeRange(i, 1)]];
}
 
NSLog([m description]);

20 мар. 2014 г.

Добавление числа в массив / Add number to Array

Обычно в массив типа NSArray или NSMutableArray нельзя добавить простое число или структуру, а только объект. Значит (в нашем примере) преобразуем наше простое число (например int) в объект. Число можно преобразовать как с помощью NSString, так и с помощью NSNumber.

NSMutableArray *myArray = [NSMutableArray arrayWithCapacity:30]; // должен быть мутабельным
 
for (int x = 0; x < 30; x++) {
    // добавить как NSString
    [myArray addObject:[NSString stringWithFormat:@"%d", x]];
 
    // добавить как NSNumber
    [myArray addObject:[NSNumber numberWithInt: x]];
}
 
// результат
NSLog([myArray description]);

Для обоих случаев используемые классы возвращают число как объект.

NSString удаление пробелов в начале и конце текста

Удаление ненужных пробелов по бокам текста:

NSString *string = @" spaces in front and at the end ";
NSString *trimmedString = [string stringByTrimmingCharactersInSet:
                                  [NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSLog(trimmedString)

Хотя такая стандартная задача может выглядеть с чрезмерно большим количеством кода,но при этом Вы получаете множество дополнительных функций для операций с текстом. NSCharacterSet и его набор некоторых методов:

- alphanumericCharacterSet
- capitalizedLetterCharacterSet
- controlCharacterSet
- decimalDigitCharacterSet
- decomposableCharacterSet
- illegalCharacterSet
- letterCharacterSet
- lowercaseLetterCharacterSet
- newlineCharacterSet
- nonBaseCharacterSet
- punctuationCharacterSet
- symbolCharacterSet
- uppercaseLetterCharacterSet
- whitespaceAndNewlineCharacterSet
- whitespaceCharacterSet

19 мар. 2014 г.

Как хранить BOOL - переменную как NSNumber

Создать NSNumber - переменную с булевой можно таким способом:

BOOL myBool = YES;
NSNumber *boolNumber = [NSNumber numberWithBool:myBool];
NSLog(@"boolNumber is %@", boolNumber); // выдаст 1 для YES и 0 для NO

Технически это аналог инициализации NSNumber с помощью литералов @1 и @0
И обратная операция с NSNumber в BOOL:

BOOL anotherBool = [NSNumber numberWithBool:YES];
NSLog(@"anotherBool is %i", anotherBool); // выдаст 1 для YES и 0 для NO

18 мар. 2014 г.

Badges на иконке Вашего приложения (дополнение) / NSlider and docTile

Дополнение к статье заключается в том чтобы в реальном времени изменять данные в бэйджике на иконке приложения вместе с некими изменениями данных в Вашем приложении.

Нужно добавить в методе - (void)applicationDidFinishLaunching:(NSNotification *)aNotification строчку после [sliderTextLabel setIntValue:[slider intValue]]; :

[[NSApp dockTile] setBadgeLabel:[NSString stringWithFormat:@"%i",[slider intValue]]];

Эта строка проинициализирует начальное состояние числового значения слайдера и выведет его в бейдж.


Также в нашем экшене - (IBAction)sliderChange:(id)sender после строки [sliderTextLabel setIntValue:[slider intValue]]; Вставить ту же строку, что Вы вставляли в - (void)applicationDidFinishLaunching:(NSNotification *)aNotification 

При изменении положения ползунка, данные будут меняться и в нашем бэйдже. Код:

[NSString stringWithFormat:@"%i",[slider intValue]]

приводит целочисленное значение в тип "строка", тем самым обрезает плавающую точку. Если вместо этого написать просто [slider stringValue], то будет отображаться число с плавающей точкой.

17 мар. 2014 г.