2012-09-05 35 views
0

我对Xcode相对比较陌生,并且正在尝试编写一个应用程序,该应用程序将从教程中播放iTunes中的视频,但我的应用程序不断崩溃。NSInvalidArgumentException:对象不能为零

这是给我的错误代码:

'NSInvalidArgumentException' 的,理由是: '* - [__ NSArrayM insertObject:atIndex:]:对象不能是零'

我用断点,并找到问题的地方,但我不知道如何解决它。这条线给我的问题是:

[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 

回答

1

检查[项目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. 
} 
+0

谢谢!我把它放进去,它显示列表返回0.我仍然不确定如何修复它。该代码与我基于它的示例项目相匹配,但即使这样也不会在我的内容中出现。这是iPodLibrary.h&.m中的某些内容不起作用的原因,因为它应该进入iTunes资料库,但没有进入iTunes资料库。你有任何其他想法如何解决它?再次感谢你,我感谢你的帮助。 – Kilij522

+0

您是否已验证iTunes资料库中是否有东西可以返回? –

+0

是的。它应该是从iTunes提起电影,我正在iPad上运行/测试它,并且我确保将电影放在它上面,以便它能够返回。 – Kilij522

0

在Objective C中,你不能把零值到NSArrayNSDictionary

相关问题