应用程序在设备上崩溃 - 在Simulator上完美运行

Cod*_*eIt 11 null ios ios-simulator swift

最近,我一直在研究一个应用程序.该应用程序的目标是向您展示在通知中心的今日视图中拍摄的最近10张照片,以及其他内容.该应用程序在iOS模拟器中完美运行,但只要我将它放在真实设备上进行测试,它就会失败.它返回错误:

fatal error: Unexpected nil while unwrapping an Optional value
Run Code Online (Sandbox Code Playgroud)

通常,这很容易修复,因为XCode突出显示返回nil的代码,并为您提供修复它的机会.在这种情况下,我的代码都没有突出显示.相反,它突出显示来自线程1的一行(这是正确的术语吗?线程1?),如下所示: 在此输入图像描述 另请注意,高位线上方是线

; function signature specialization <Arg[0] = Exploded, Arg[1] = Exploded of Swift.(_fatalErrorMessage (Swift.StaticString, Swift.StaticString, Swift.StaticString, Swift.UInt) -> ()).(closure #2)
Run Code Online (Sandbox Code Playgroud)

由于它的"fatalErrorMessage"部分,我在图片中包含了这一行.我怀疑这可以让我知道错误,但我不知道这意味着什么.我还没有达到理解的程度.

此外,经过一番思考后,我在viewDidLoad()函数中放置了一个断点,希望跟踪任何nil值,但代码似乎永远不会达到这一点.好像我的代码都没有被运行.

有没有人有这样的问题/了解错误代码(如果它是什么)意味着什么?我现在非常绝望,因此我在这里.

谢谢,CodeIt

编辑: 我在viewDidLoad函数中放置了一个println行来仔细检查它是否正在运行.println函数运行和输出正确,所以我想我可能只是搞砸了我的断点.无论如何 - 代码运行,但它仍然没有突出显示导致nil值的任何代码.

编辑2: 根据要求,我插入了部分代码.请记住,这段代码是"初稿",如果你愿意的话,我还没有去清理它.我只是想让它发挥作用:

@IBOutlet weak var currentPosLabel: UILabel!
var currentImgPos = 0
@IBOutlet weak var imageView: UIImageView!
var images: NSMutableArray!
var totalImageCountNeeded: Int!

func fetchPhotos() {
    images = NSMutableArray()
    totalImageCountNeeded = 10
    self.fetchPhotoAtIndexFromEnd(0)
}


func fetchPhotoAtIndexFromEnd(index: Int) {
    let imgManager = PHImageManager.defaultManager()

    var requestOptions = PHImageRequestOptions()
    requestOptions.synchronous = true

    var fetchOptions = PHFetchOptions()
    fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]

    if let fetchResult = PHAsset.fetchAssetsWithMediaType(PHAssetMediaType.Image, options: fetchOptions) {
        if fetchResult.count > 0 {
            imgManager.requestImageForAsset(fetchResult.objectAtIndex(fetchResult.count - 1 - index) as? PHAsset, targetSize: view.frame.size, contentMode: PHImageContentMode.AspectFill, options: requestOptions, resultHandler: { (image, _) in
                self.images.addObject(image)
                if index + 1 < fetchResult.count && self.images.count < self.totalImageCountNeeded {
                    self.fetchPhotoAtIndexFromEnd(index + 1)
                } else {
                    println("Completed array: \(self.images)")
                }



            })
        }
    }

}







override func viewDidLoad() {
    super.viewDidLoad()
}

override func viewDidAppear(animated: Bool) {
    // NOTE: I am calling the fetchPhotos() function here since earlier in my debugging I thought the problem may be that I was calling it too early in the viewDidLoad function. It an incorrect theory, but it was worth a try.
    fetchPhotos()
    if images.count > 0 {
        imageView.image = images[1] as? UIImage
    }
}
Run Code Online (Sandbox Code Playgroud)

我删除了一些我知道没有理由导致错误的代码部分,例如@IBActions,didReceiveMemoryWarning()等.

Xen*_*noN 2

即使这是老问题。我通过从 xcode 删除派生数据发现了我的问题。

Xcode -> window->Projects 然后选择并删除项目派生数据。