Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/122.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-致命错误:在展开可选值(lldb)时意外发现nil_Ios_Xcode_Swift_Uiviewcontroller - Fatal编程技术网

ios-致命错误:在展开可选值(lldb)时意外发现nil

ios-致命错误:在展开可选值(lldb)时意外发现nil,ios,xcode,swift,uiviewcontroller,Ios,Xcode,Swift,Uiviewcontroller,我在Swift中使用UIViewController,但当我尝试持久化数据并尝试将其检索回应用程序时,我得到了它 import UIKit class ViewController: UIViewController { @IBOutlet var linefields:[UITextField]! func dataFilePath() -> String { let paths = NSSearchPathForDirectoriesInDomai

我在Swift中使用UIViewController,但当我尝试持久化数据并尝试将其检索回应用程序时,我得到了它

import UIKit

class ViewController: UIViewController {

    @IBOutlet var linefields:[UITextField]!

    func dataFilePath() -> String {
        let paths = NSSearchPathForDirectoriesInDomains(
            NSSearchPathDirectory.DocumentDirectory,
            NSSearchPathDomainMask.UserDomainMask, true)
        let documetnDirectory = paths[0] as! NSString
        return documetnDirectory.stringByAppendingPathComponent("data.plist") as String
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        let filePath = self.dataFilePath()

        if (NSFileManager.defaultManager().fileExistsAtPath(filePath)){
            let array = NSArray(contentsOfFile: filePath) as! [String]
            for (var i=0;i<array.count;i++){
                linefields[i].text = array [i]
            }
        }

        let app = UIApplication.sharedApplication()
        NSNotificationCenter.defaultCenter().addObserver(self,selector: "applicationWillResignActive:",name:UIApplicationWillResignActiveNotification,
            object: app)

    }

    func applicationWillResignActive(notification:NSNotification){
        let filePath = self.dataFilePath()
        let array = (self.linefields as NSArray).valueForKey("text") as! NSArray
         //-----> Next line: fatal error: unexpectedly found nil while unwrapping an Optional value
        array.writeToFile(filePath, atomically:true)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}
导入UIKit
类ViewController:UIViewController{
@IBOUTLE var行字段:[UITextField]!
func dataFilePath()->字符串{
让path=NSSearchPathForDirectoriesInDomains(
NSSearchPathDirectory.DocumentDirectory,
NSSearchPathDomainMask.UserDomainMask,true)
将documetnDirectory=路径[0]设为!NSString
将documetnDirectory.stringByAppendingPathComponent(“data.plist”)作为字符串返回
}
重写func viewDidLoad(){
super.viewDidLoad()
//加载视图后,通常从nib执行任何其他设置。
让filePath=self.dataFilePath()
if(NSFileManager.defaultManager().fileExistsAtPath(filePath)){
将array=NSArray(contentsOfFile:filePath)设为![String]

对于(var i=0;i

这是斯威夫特的错误,因为当你告诉它某个变量中有一个值,但没有一个值。基本上,你从中读取数据的一个变量没有数据,因为出于某种原因,它从未被分配数据


正如评论人士最近所说,可能是这一行:
(self.linefields作为NSArray)。valueForKey(“text”)作为!NSArray
。我的建议是将
As!
切换为
As?
As
,因为这不会告诉swift,“这里肯定有值。”其他评论建议尝试用更简单的方法来替代这一潜在的问题行,并在代码的其他地方更仔细地使用
map()
函数。

检查从TextFeild(故事板文件)到Outlets(swift文件)的连接。因为缺少连接将返回nil。

这几乎肯定是Swift堆栈溢出报告的最常见异常。您尝试了什么调试?尝试设置异常断点以确定导致异常的行。欢迎使用StackOverflow!您能更具体地说明代码返回的行吗一个零以及你想要完成的。我猜是
(self.linefields作为NSArray)。valueForKey(“text”)
正在返回
nil
@originaluser2
NSArray
上的
valueForKey
方法返回一个新数组,该数组是从数组中所有对象上获取指定键的值得到的结果,因此尽管我同意这一行可能是问题所在,
valueForKey(“text”)
valid@Paulw11啊,好吧,我不知道!知道起来很有趣。转换为as!转换为as?对我没有帮助。