通过构建运行项目在MAC OSX 10.7中不起作用

时间:2013-07-03 06:22:28

标签: objective-c xcode cocoa artwork avmetadataitem

-(void)artworkImages{
NSArray *noOfSongs = [mySongsArray content];
for (int i=0; i<[noOfSongs count]; i++) {
    NSDictionary *dic = [[NSDictionary alloc] init];
    dic = [[mySongsArray arrangedObjects] objectAtIndex:i];
    NSURL *url = [NSURL fileURLWithPath:[dic objectForKey:@"Path"]];
    AVURLAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil];
   for (NSString *format in [asset availableMetadataFormats]) {
        for (AVMetadataItem *item in [asset metadataForFormat:format]) {
            if (i>240 && i<250) {
                NSBeginAlertSheet(@"Check the loop", @"Delete", nil, @"Cancel", window, self, @selector(alertEnd:returnCode:cInfo:), NULL, nil, @"format===%@,%d",format);
            }
        }
   }
}

}

如果我按代码(X代码)运行项目,上面的方法工作正常,但如果我按构建运行则会遇到问题。我正在从iTunes library.xml导入歌曲,然后我将其存储到NSArrayController。在这个方法中,我试图获取图片图像,但如果我按照构建运行,我将获得400个图像中的250个。

2 个答案:

答案 0 :(得分:0)

没有alertEnd的代码:returnCode:cInfo:很难说,但它通常看起来像是该函数中的东西正在杀死for循环。

您到底想要实现的目标是什么:

            if (i>240 && i<250)

您可以发布'alertEnd:returnCode:cInfo'的代码。如果您使用__block作为警报表,也可能更容易阅读。如果不多次引用alertEnd:returnCode:cInfo,我会将其保留为块。如果你重复使用alertEnd:returnCode:cInfo中的代码,那么将它提升为它自己的void / function。

答案 1 :(得分:0)

一些可能性:

  • 您正在导入/读取使用较少的一组itunes文件创建的其他“iTunes library.xml”文件。也许这个文件名是在xcode参数???

  • 中设置的
  • [noOfSongs count]具有不一致的值,因为对象已从noOfSongs中删除

尝试:

NSInteger *cntSongs = [[mySongsArray content] count];
for (int i=0; i< cntSongs; i++) {

而不是当前:

NSArray *noOfSongs = [mySongsArray content];
for (int i=0; i<[noOfSongs count]; i++) {
  • mySongsArray被另一个同名属性所遮蔽。看-Wshadow。