Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 释放序列导致致命错误_Ios_Swift_Fatal Error_Ibaction_Unwind Segue - Fatal编程技术网

Ios 释放序列导致致命错误

Ios 释放序列导致致命错误,ios,swift,fatal-error,ibaction,unwind-segue,Ios,Swift,Fatal Error,Ibaction,Unwind Segue,我不断遇到致命错误: 在展开可选值时意外发现nil 我知道错误的一般含义,但是我不知道我做错了什么导致了它 我已经把问题缩小到一个放松的思维阶段: import UIKit import Foundation import CoreData import Alamofire import FastImageCache import SwiftyJSON class ViewControllerTabBar: UITabBarController { var shouldLogin = fal

我不断遇到致命错误:

在展开可选值时意外发现nil

我知道错误的一般含义,但是我不知道我做错了什么导致了它

我已经把问题缩小到一个放松的思维阶段:

import UIKit
import Foundation
import CoreData
import Alamofire
import FastImageCache
import SwiftyJSON

class ViewControllerTabBar: UITabBarController {

var shouldLogin = false
var user: User? {
    didSet {
        if user != nil {
        } else {
            shouldLogin = true
        }
    }
}

var nextURLRequest: NSURLRequest?
var coreDataStack: CoreDataStack!


override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.

    UITabBar.appearance().tintColor = UIColor(red: 99/255, green: 222/255, blue: 154/255, alpha: 1)

    if let fetchRequest = coreDataStack.model.fetchRequestTemplateForName("UserFetchRequest") {

        let results = try! coreDataStack.context.executeFetchRequest(fetchRequest) as! [User]

        user = results.first
    }

}

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)
    if shouldLogin {
        performSegueWithIdentifier("login", sender: self)
        shouldLogin = false
    }

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

@IBAction func unwindToPhotoBrowser (segue : UIStoryboardSegue) {

}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "login" && segue.destinationViewController.isKindOfClass(UINavigationController.classForCoder()) {
        let navigationController = segue.destinationViewController as! UINavigationController
        if let oauthLoginViewController = navigationController.topViewController as? OauthLoginViewController {
            oauthLoginViewController.coreDataStack = coreDataStack
        }

        if self.user != nil {
            coreDataStack.context.deleteObject(user!)
            coreDataStack.saveContext()

        }
    }
}
}
问题似乎出在你身上

@IBAction func unwindToPhotoBrowser (segue : UIStoryboardSegue) {

}

我已经在故事板上仔细检查了我的标识符和连接。我有一个类似的项目,它使用类似的登录设置,当这个iAction被删除时,该项目似乎会出现相同的错误,所以我认为这可能是问题所在。当我在“查找导航器”中搜索操作时,它不会在旁边显示“M”图标,而在我的其他项目中则显示“M”。

NBD,但最好使用if let for“if self.user!=nil”。那么您就不必强制用户展开。您是否设置了异常断点以查看是哪一行导致了问题?@Paulw11是的。这似乎与@IBAction的展开顺序有问题,但我不知道问题出在哪里。为什么选项卡栏控制器中有展开顺序?这个控制器也在导航控制器中吗?或者你是在上面展示另一个VC吗?@Paulw11它更像是一个导航控制器