我对Xcode比较陌生,我正在尝试编写一个应用程序,它将从教程中播放iTunes中的视频,但我的应用程序一直在崩溃。
它给了我错误代码:
'NSInvalidArgumentException',原因:' * - [__ NSArrayM insertObject:atIndex:]:object不能为nil'
我使用断点并找到问题所在,但我不确定如何修复它。给我带来问题的那条线是:
[list addObject:[item valueForProperty:MPMediaItemPropertyAssetURL]];
有没有人有任何想法?以下是.m文件代码:
@implementation iPodLibrary
+(NSArray *) movieList {
NSMutableArray *list =
[[[NSMutableArray allocWithZone:NULL] init] autorelease];
MPMediaQuery *query = [[MPMediaQuery alloc] init];
[query addFilterPredicate:[MPMediaPropertyPredicate
predicateWithValue:[NSNumber numberWithInteger:(MPMediaTypeAny ^ MPMediaTypeAnyAudio)]
forProperty:MPMediaItemPropertyMediaType]];
for (MPMediaItem* item in [query items]) {
[list addObject:[item valueForProperty:MPMediaItemPropertyAssetURL]];
}
[query release];
return list;
}
+ (NSString *) movieTitle:(NSURL *)aURL {
NSString *aTitle = nil;
if (aURL) {
AVAsset* aAsset = [[AVURLAsset allocWithZone:NULL]
initWithURL:aURL options:nil];
for (AVMetadataItem* metadata in [aAsset commonMetadata]) {
if ([[metadata commonKey] isEqualToString:AVMetadataCommonKeyTitle]) {
aTitle = [metadata stringValue];
break;
}
}
}
return aTitle;
}
@end
答案 0 :(得分:1)
检查[item valueForProperty:MPMediaItemPropertyAssetURL]是否实际返回一个值。 NSMutableArray不允许使用addObject方法添加nil值。见NSMutableArray addObject: documentation
您可以检查它是否为空:
for (MPMediaItem* item in [query items]) {
id itemValue = [item valueForProperty:MPMediaItemPropertyAssetURL];
[list addObject:itemValue]; // break point this line and see what itemValue is.
}
答案 1 :(得分:0)
在Objective C中,您无法将nil值放入NSArray
或NSDictionary
。