【问题标题】:<Invalid CFStringRef> when reading metadata from image on iPhone从 iPhone 上的图像读取元数据时 <Invalid CFStringRef>
【发布时间】:2011-07-03 00:08:35
【问题描述】:

我从照片库中读取图像并使用资产库获取元数据。然后我尝试阅读用户评论 exif 标签并将其显示在我的文本视图中。代码在这里:

 [assetLibrary assetForURL:assestURL resultBlock:^(ALAsset *asset) {
        ALAssetRepresentation *representation = [asset defaultRepresentation];
        NSMutableDictionary *metadataDictPhoto = (NSMutableDictionary*)[representation metadata]; 
        NSLog(@"This is the read metadata I believe: %@",[metadataDictPhoto description]);

        metadataDictPhoto = metadataGlobal;

    } failureBlock:^(NSError *error) {
        NSLog(@"%@",[error description]);
    }];        

    NSMutableDictionary *exifDictionary = (NSMutableDictionary*)[metadataGlobal objectForKey:(NSString*) kCGImagePropertyExifDictionary];

    NSString *comment = (NSString*)[exifDictionary valueForKey:(NSString*)kCGImagePropertyExifUserComment];

    textView.text = comment;

当我运行它时,没有崩溃,但文本视图中没有显示任何内容。我已经使用 NSLogs 验证了从我的代码接收到的元数据是正确的,因为我可以看到我的自定义 exif 用户评论标签。如果我将鼠标放在评论上,它会给我错误。我无法摆脱它。

如何从元数据字典中读取字符串并将其显示在 textView 中?

编辑:DeePak 注意到我混淆了一个赋值语句并更改了它,但这并没有解决问题。虽然我正在研究这个,但我发现我的 NSLogs 显示代码是读取元数据的代码被传递,然后它运行字典和字符串代码,此时元数据没有创建。然后它完成 imagepicker 委托函数,然后它最终进入完整块,然后运行代码并输出字典,然后我可以看到一切都是正确的。

如何让代码立即运行或让程序等待assetforurl 完成?

【问题讨论】:

    标签: iphone xcode image metadata nsdictionary


    【解决方案1】:

    你的这个任务被翻转了。

    metadataDictPhoto = metadataGlobal;
    

    您需要将其更改为

    metadataGlobal = metadataDictPhoto;
    

    metadataGlobal 可能是一个实例变量,这就是它没有崩溃的原因,因为它仍然是nil -

    NSMutableDictionary *exifDictionary = (NSMutableDictionary*)[metadataGlobal objectForKey:(NSString*) kCGImagePropertyExifDictionary];
    

    【讨论】:

    • 我改变了它,因为你是正确的,但这并没有解决我的问题。我用我最新的思路更新了我的问题(已编辑)。代码在完成块运行之前运行。我将如何暂停程序直到它完成?有关更多详细信息,请参阅我的问题编辑。
    【解决方案2】:

    我通过将完成块外部的代码添加到完成块内部来修复它,并确保所有变量都已保存以供随后使用。这非常有效。

    现在,只有当我能弄清楚为什么它没有正确编写 IPTC 时,我才会被设置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-21
      相关资源
      最近更新 更多