вівторок, 8 квітня 2014 р.

Класс NSNumber - примеры

Этот класс является одним из самых странных дополнений в языке Objective-C. Для обработки числовых типов достаточно внутренних функций и методов. Единственная, как бы, цель класса NSNumber это обработка объектов NSArray, который хранит в себе только >объекты.

Инициализация объекта NSNumber

Суть такова, что основные методы инициализации начинаются одинаково, но отличаются лишь конечным типом числа, т.е. что имеется в виду:
numberWith

Исходя из этого полное имя метода, для определенного типа числа, выглядит так:
numberWithBool
numberWithChar
numberWithDouble
numberWithFloat
numberWithInt
numberWithInteger
numberWithLong
numberWithLongLong
numberWithShort
numberWithUnsignedChar
numberWithUnsignedInt
numberWithUnsignedInteger
numberWithUnsignedLong
numberWithUnsignedLongLong
numberWithUnsignedShort
Например:
NSNumber *myFloat = [NSNumber numberWithFloat:10.09];

Возвращение и приведение к другому типу числа из переменной-объекта класса

boolValue
charValue
decimalValue
doubleValue
floatValue
intValue
integerValue
longLongValue
longValue
shortValue
unsignedCharValue
unsignedIntegerValue
unsignedIntValue
unsignedLongLongValue
unsignedLongValue
unsignedShortValue
Например:
NSNumber *myFloat = [NSNumber numberWithDouble:10.09];
float floatValue = [myFloat floatValue];
NSLog(@"Value = %f", floatValue);

Сравнение числовых объектов

Для сравнения значения, хранящихся в объектах необходимо использовать isEqualToNumber метод. isEqualToNumber возвращает логическое значение в зависимости от содержания двух объектов. Например:
NSNumber *myFloat1 = [NSNumber numberWithDouble:10.09];
NSNumber *myFloat2 = [NSNumber numberWithDouble:10.08];

if ([myFloat1 isEqualToNumber: myFloat2]) {
        NSLog(@"Numbers are equal");
} else {
        NSLog(@"Numbers are not equal");
}
Или просто сравнить эти объекты методом compare:
NSNumber *myFloat1 = [NSNumber numberWithDouble:10.09]; 
NSNumber *myFloat2 = [NSNumber numberWithDouble:10.08]; 
NSComparisonResult result = [myFloat1 compare:myFloat2];

if (result == NSOrderedSame) {
        NSLog(@"Numbers are equal");
} else if (result == NSOrderedAscending) {
        NSLog(@"Float1 is less than Float2");
} else if (result == NSOrderedDescending) {
        NSLog(@"Float1 is greater than Float2");
}

Конвертация числа в строку

NSNumber *myFloat = [NSNumber numberWithDouble:10.09];
NSString *myString = [myFloat stringValue];
NSLog (@"Number as string is %@", myString);

Немає коментарів:

Дописати коментар

HyperComments for Blogger

comments powered by HyperComments