使用PHFetchResult的NSRangeException

时间:2016-05-13 15:01:14

标签: ios swift photosframework

我正在开发一个iOS应用程序,从照片库中取出视频,它始终有效。我刚刚在不同的设备上测试了应用程序(这不是我测试的第一个),当我使用检索到的数据时它崩溃了,我不明白为什么......

这是我的代码:

self.videosAssets = PHAsset.fetchAssetsWithMediaType(.Video, options: nil)

if self.videosAssets != nil {
    for i in 0..<self.videosAssets!.count {
        if let video = self.videosAssets!.objectAtIndex(i) as? PHAsset {
            self.videos.append(Video(asset: video))
        }
    }
}

它可以获取221个视频,但在i == 59时会崩溃。

这是我得到的错误:

Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArray0 objectAtIndex:]: index 0 beyond bounds for empty NSArray'

2 个答案:

答案 0 :(得分:0)

self.videosAssets = PHAsset.fetchAssetsWithMediaType(.Video, options: nil)

if let videoAssets = self.videosAssets {
   videoAssets.forEach { video in 
      if video as? PHAsset { self.videos.append(Video(asset: video)) }
   }
}

答案 1 :(得分:0)

测试Video构造函数后,问题就出现了。出于某种原因,当我调用let resources = PHAssetResource.assetResourcesForAsset(asset)时,它会返回一个空数组,这就是应用程序崩溃的地方。

对于这个无用的帖子感到抱歉,也许它会帮助某人...