【问题标题】:NSRangeException with PHFetchResultNSRangeException 与 PHFetchResult
【发布时间】:2016-05-13 15:01:14
【问题描述】:

我正在开发一个 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'

【问题讨论】:

  • 不,它不会在 i == 59 崩溃,它会在索引 0 崩溃。您确定这是实际导致错误/崩溃的代码吗?
  • 后来我意识到我没有测试 Video 构造函数...我认为应用程序在这里崩溃了。我会在星期一测试它

标签: ios swift photosframework


【解决方案1】:
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)) }
   }
}

【讨论】:

    【解决方案2】:

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

    对不起这个无用的帖子,也许它会对某人有所帮助......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-07
      • 1970-01-01
      • 2014-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多