Не уверен в значении, полученном из NSDictionary - PullRequest
0 голосов
/ 14 декабря 2011

Я хочу получить значение из NSDictionary.

Вот фрагмент кода:

NSDictionary *metadataDict = [representation metadata]; 
NSLog(@"%@",metadataDict);

"DateTimeOriginal" - это значение, которое я хочу получить из следующих выходных данных.

{
ColorModel = RGB;
DPIHeight = 72;
DPIWidth = 72;
Depth = 8;
Orientation = 6;
PixelHeight = 1936;
PixelWidth = 2592;
"{Exif}" =     {
    ApertureValue = "2.970854";
    ColorSpace = 1;
    ComponentsConfiguration =         (
        1,
        2,
        3,
        0
    );
    DateTimeDigitized = "2011:09:28 09:35:36";
    DateTimeOriginal = "2011:09:28 09:35:36";
    ExifVersion =         (
        2,
        2,
        1
    );
    ExposureMode = 0;
    ExposureProgram = 2;
    ExposureTime = "0.06666667";
    FNumber = "2.8";
    Flash = 24;
    FlashPixVersion =         (
        1,
        0
    );
    FocalLength = "3.85";
    ISOSpeedRatings =         (
        320
    );
    MeteringMode = 5;
    PixelXDimension = 2592;
    PixelYDimension = 1936;
    SceneCaptureType = 0;
    SensingMethod = 2;
    Sharpness = 2;
    ShutterSpeedValue = "3.9112";
    SubjectArea =         (
        1295,
        967,
        699,
        696
    );
    WhiteBalance = 0;
};
"{GPS}" =     {
    Latitude = "37.54216666666667";
    LatitudeRef = N;
    Longitude = "126.95";
    LongitudeRef = E;
    TimeStamp = "01:19:05.00";
};
"{TIFF}" =     {
    DateTime = "2011:09:28 09:35:36";
    Make = Apple;
    Model = "iPhone 4";
    Orientation = 6;
    ResolutionUnit = 2;
    Software = "4.3.5";
    XResolution = 72;
    YResolution = 72;
    "_YCbCrPositioning" = 1;
};

}

Я знаю, это долго, но я пробовал эти три, и это все равно не будет работать.

NSLog (@ "valueForKey% @", [metadataDict valueForKey: @ "Доли секунд оригинального времени"]);NSLog (@ "valueForKeyPath% @", [metadataDict valueForKeyPath: @ "DateTimeOriginal"]);NSLog (@ "objectForKey% @", [metadataDict objectForKey: @ "DateTimeOriginal"]);

Кто-нибудь знает, какой тип данных содержится в NSDictionary и как я могу его получить?

Большое спасибо.

Над ссылкой на проект: http://dl.dropbox.com/u/12439052/TheK2.zip

Ответы [ 3 ]

4 голосов
/ 14 декабря 2011

Что вы действительно ищете, так это

NSDictionary *exif = [metadataDict objectForKey:@"{Exif}"];
NSLog(@"DateTimeOriginal: %@", [exif objectForKey:@"DateTimeOriginal"]);

Если вы прочитаете вывод из вашего первого журнала, вы увидите, что нужный вам ключ находится внутри другого словаря с ключом "{Exif}".Кроме того, -objectForKey: - лучший способ здесь использовать вместо -valueForKey: (последний для универсального KVO, первый - реальный метод доступа к объекту словаря).

0 голосов
/ 17 мая 2012

Во время ответа Имейте в виду значение строк

{ .......... } indicates dictionary.
(............) indicates array.
Dictionary always have key with it like somename = "value in it".
Array has value seperated by comma like a , b , c .....
Now it is possible it may have array into dictionary like { SubjectArea = ( 1295,967,699,696);} and vice versa.
0 голосов
/ 14 декабря 2011

Попробуйте это:

NSString *DateTimeOriginal=[[metadataDict objectForKey:@"{Exif}"]objectForKey:@"DateTimeOriginal"];
...