2010-12-05 2 views
22

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

@"UIImagePickerControllerMediaMetadata" 

вернуть информацию о картине. Один из ключей в этом словарем

@"Orientation" 

Из моего экспериментирования, Портрет и Перевернутый являются 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 говорит «Класс: NSCFNumber»

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

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

+0

Я обошел себя и просто использовал метод -description для ориентации, чтобы получить NSString, а затем использовал -isEqualToString: чтобы выполнить мое определение. Но я все равно хотел бы знать ответ =) – Justin 2010-12-05 02:46:37

ответ

35

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

[orientation integerValue] 
+0

Нужно ли приведение к NSNumber *? – Josh 2010-12-05 02:52:46

6

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

 Смежные вопросы

  • Нет связанных вопросов^_^