Что такое класс NSCFNumber в iOS 4.1? - PullRequest
22 голосов
/ 05 декабря 2010

После успешного получения изображения с камеры iPhone на iOS 4.1 вы можете использовать клавишу

@"UIImagePickerControllerMediaMetadata"

для возврата информации об изображении.Один из ключей в этом словаре -

@"Orientation"

. Из моих экспериментов, Portrait и Upside down - 6 и 8 соответственно, а ландшафты - 1 и 3. Посмотрите на этот код:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    NSDictionary *metaData = [info objectForKey:@"UIImagePickerControllerMediaMetadata"];
    id orientation = [metaData objectForKey:@"Orientation"];
    NSLog(@"Class: %@",[orientation class]);

NSLog говорит: "Class: NSCFNumber"

Мне нужно сравнить значение этого объекта, чтобы определить, как действовать.Пейзаж - 1 или 3, портрет - 6 или 8. Я не уверен, что печатать как ориентацию или как вызывать ее.NSNumber и NSInteger всегда говорят мне, что я делаю целые числа из указателей без приведения.

Спасибо за ваше время!

Ответы [ 2 ]

35 голосов
/ 05 декабря 2010

Это говорит о том, что ориентация является экземпляром NSNumber.Технически, NSCFNumber является частным подклассом NSNumber, но это деталь реализации, о которой вам не нужно беспокоиться.Чтобы получить целочисленное значение, вы должны позвонить

[orientation integerValue]
6 голосов
/ 05 декабря 2010

NSNumber - это кластер классов. NSCFNumber является конкретной, "частной" реализацией класса в этом кластере. Просто используйте возвращаемое значение, как и объект NSNumber.

...