gpt4 book ai didi

ios - 使用 'AVMutableMetadataItem *' 类型的表达式初始化 'AVMetadataItem *' 的不兼容指针类型?

转载 作者:行者123 更新时间:2023-11-29 01:28:35 25 4
gpt4 key购买 nike

在它起作用之前我无法理解问题是什么

 - (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;
}

提前谢谢你。

最佳答案

您要分配给 item 的属性变量声明为:

@property(nonatomic, readonly) NSArray <AVMetadataItem *> *metadata

这意味着编译器期望数组中的每一项都是 AVMetadataItem 类型.此类是 AVMutableMetadataItem 的父类(super class),并且您不能将对父类(super class)的引用分配给子类的变量。

它之前可能起作用的原因是 SDK 和编译器并不总是支持泛型(属性声明中的 <AVMetadataItem *>)。只要你不对待item,它就会起作用作为可变的。

解决方法是更改​​ item 的类型,或分配 mutableCopyavItem.asset.metadata[titleIndex] .

关于ios - 使用 'AVMutableMetadataItem *' 类型的表达式初始化 'AVMetadataItem *' 的不兼容指针类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33737477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com