gpt4 book ai didi

iOS swift : Unexpectedly found nil while unwrapping optional value

转载 作者:行者123 更新时间:2023-11-29 01:58:14 24 4
gpt4 key购买 nike

当尝试将文件内容读入 var 时:

var mytext = ""
...
println(downloadFilePath)
mytext = String(contentsOfFile: downloadFilePath, encoding: NSUTF8StringEncoding, error: nil)!

我收到此错误: 在展开可选值时意外发现 nil

文件本身存在,并且生成较早。每次运行时文件的大小和内容可能会有所不同。相同的代码有时可以工作。

可能是文件大小 (21K) 或内容导致的?

最佳答案

Trust me, compiler. I know what I'm doing. I'm taking off my seatbelt and helmet.

这就是您在使用强制解包运算符 ! 或处理“隐式解包可选”类型(例如 String!)时告诉编译器的内容。这是我不惜一切代价避免的事情。尝试像这样重构您的代码:

assert(nil != (downloadFilePath as String?))
var error: NSError? = nil
if let mytext = String(contentsOfFile: downloadFilePath, encoding: NSUTF8StringEncoding, error: &error) {
println("contentsOfFile was called successfully!")
println("mytext: \(mytext)")
} else {
println("I should implement error handling. What happened? \(error)")
assertionFailure("Until I have a UI for telling the user about the fail, let's just visit the debugger.")
}

这里有两种技术可以帮助我保持代码的快乐:

  • 使用您的 assertionspreconditions 。在出现不可恢复故障的最早迹象时崩溃。 PragProg Tips 引用的死程序通常比残缺程序造成的损害要小得多。断言还可以作为可执行文档:如果您断言某个状态,下一个阅读您的代码的程序员可以推断出您的方法中的可能状态。

  • 直到你的世界完全不受 nil 的影响(如果你正在使用 Foundation 或引入 ! 强制解包到你的代码中就不是这样了),如错误所示,您可能会在非可选类型中找到 nil。如果您怀疑这一点,请将非可选的变成可选的并检查它。我把一些 examples 放在一起,告诉你如何处理这些偷偷摸摸的 nils。将这些与未在签名中表达契约的方法调用断言相结合。

关于iOS swift : Unexpectedly found nil while unwrapping optional value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30603237/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com