0
-(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 张图像。

4

2 回答 2

0

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

您到底想通过以下方式实现什么:

            if (i>240 && i<250)

你能发布'alertEnd:returnCode:cInfo'的代码吗?此外,如果您将 __block 用于警报表,它可能会更容易阅读。如果 alertEnd:returnCode:cInfo 没有被多次引用,我会将其保留为一个块。如果您在 alertEnd:returnCode:cInfo 中重用代码,则将其提升为它自己的 void/function。

于 2013-07-03T07:23:27.870 回答
0

一些可能性:

  • 您正在导入/读取一个不同的“iTunes library.xml”文件,该文件是用一组较小的 iTunes 文件创建的。也许那个文件名是在 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。
于 2013-08-07T07:39:21.017 回答