升级到优胜美地对objectForKey mp3图像有负面影响

时间:2014-10-17 21:22:26

标签: mp3 nsdictionary osx-yosemite

刚刚更新到Yosemite和Xcode 6.0.01,此代码不再有效:

- (NSImage *)songImage {
    if (!_songImage) {
        AVAsset *asset = [AVAsset assetWithURL:self.fileURL];
        for (AVMetadataItem *metadataItem in asset.commonMetadata) {
            if ([metadataItem.commonKey isEqualToString:@"artwork"]){
                NSDictionary *imageDataDictionary =
                    (NSDictionary *)metadataItem.value;
                NSData *imageData = [imageDataDictionary objectForKey:@"data"];
                _songImage =[[NSImage alloc] initWithData:imageData];
            }
        }
    }
    if (!_songImage) {
        return Nil;
    }

    return _songImage;
}

我不确定该流程是否已被替换或删除,但我现在收到一条消息:

2014-10-17 14:36:23.756 FSC Music[3317:122917] -[__NSCFData objectForKey:]: unrecognized
    selector sent to instance 0x600000241cb0 2014-10-17 14:36:23.764 
FSC Music[3317:122917] -[__NSCFData objectForKey:]: unrecognized selector sent to instance
     0x600000241cb0

需要研究一个解决方案,但是想问一下是否有其他人遇到过这个问题?

1 个答案:

答案 0 :(得分:0)

我更改为以下代码以使其再次运行。

 -(NSImage *)songImage {

    if (!_songImage) {
        AVAsset *asset = [AVAsset assetWithURL:self.fileURL];
        NSArray *metadata = [asset commonMetadata];
        for ( AVMetadataItem *item in metadata ) {
            if ([item.commonKey isEqualToString:@"artwork"]){

                NSData *thePix = (NSData *)item.value;

                _songImage =[[NSImage alloc] initWithData:thePix];
             }
        }
    }
    if (!_songImage) {
        return Nil;
    }

    return _songImage;
}