【问题标题】:Not sure of the value being retrieved from NSDictionary不确定从 NSDictionary 检索的值
【发布时间】:2011-12-14 09:20:40
【问题描述】:

我想从 NSDictionary 中检索一个值。

这是一段sn-p代码:

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:@"DateTimeOriginal"]); NSLog(@"valueForKeyPath %@", [metadataDict valueForKeyPath:@"DateTimeOriginal"]); NSLog(@"objectForKey %@", [metadataDict objectForKey:@"DateTimeOriginal"]);

有谁知道 NSDictionary 中的数据类型是什么类型以及如何检索它?

非常感谢。

以上项目链接: http://dl.dropbox.com/u/12439052/TheK2.zip

【问题讨论】:

    标签: iphone nsdictionary


    【解决方案1】:

    你真正想要的是

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

    如果您从第一个日志中读取输出,您会看到您想要的键实际上在另一个具有键 "{Exif}" 的字典中。另外,-objectForKey: 是比-valueForKey: 更好的方法(后者用于通用 KVO,前者是真正的字典对象访问器)。

    【讨论】:

      【解决方案2】:

      试试这个:

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

      【讨论】:

        【解决方案3】:

        在响应期间记住行的值

        { .......... } 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.
        

        【讨论】:

          猜你喜欢
          • 2011-10-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多