我无法理解问题出在什么之前
- (NSString *)titleForAudioFileModel:(APAudioPlayerModel *)audioFileModel {
AVPlayerItem *avItem = [AVPlayerItem playerItemWithURL:[NSURL fileURLWithPath:audioFileModel.filePath]];
NSUInteger titleIndex = [avItem.asset.commonMetadata indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
AVMutableMetadataItem *metaItem = (AVMutableMetadataItem *)obj;
if ([metaItem.commonKey isEqualToString:AVMetadataCommonKeyTitle]) {
return YES;
}
return NO;
}];
if (titleIndex == NSNotFound) {
return @"";
}
AVMutableMetadataItem *item = avItem.asset.metadata[titleIndex];// Incompatible pointer types initializing 'AVMutableMetadataItem *' with an expression of type 'AVMetadataItem *'
return (NSString *)item.value;
}
提前谢谢。
答案 0 :(得分:1)
您尝试分配给wcslen
变量的属性声明为:
item
这意味着编译器期望数组中的每个项都是@property(nonatomic, readonly) NSArray <AVMetadataItem *> *metadata
类型。此类是AVMetadataItem
的超类,您不能将对超类的引用分配给子类的变量。
之前可能有用的原因是SDK和编译器并不总是支持泛型(属性声明中的AVMutableMetadataItem
)。只要你没有将<AVMetadataItem *>
视为可变,它就会奏效。
修复方法是更改item
的类型,或指定item
mutableCopy
。