0

Xcode は比較的新しく、チュートリアルから iTunes のビデオを再生するアプリを作成しようとしていますが、アプリがクラッシュし続けます。

エラーコードが表示されます:

'NSInvalidArgumentException'、理由: ' * -[__NSArrayM insertObject:atIndex:]: オブジェクトを 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
4

2 に答える 2

1

[item valueForProperty:MPMediaItemPropertyAssetURL] が実際に値を返していることを確認します。NSMutableArray では、addObject メソッドで nil 値を追加することはできません。NSMutableArray addObjectを参照してください: ドキュメント

次のように null かどうかを確認できます。

for (MPMediaItem* item in [query items]) {
    id itemValue = [item valueForProperty:MPMediaItemPropertyAssetURL];
    [list addObject:itemValue]; // break point this line and see what itemValue is.
}
于 2012-09-06T08:07:09.743 に答える
0

NSArrayObjective Cでは、またはにnil値を入れることはできませんNSDictionary

于 2012-09-06T08:09:09.623 に答える