gpt4 book ai didi

ios - 写入本地文件时纬度为零值

转载 作者:行者123 更新时间:2023-11-28 16:07:36 26 4
gpt4 key购买 nike

在 swift 应用程序中,我需要将用户的纬度写入本地文件。这是用于写入本地文件的函数:

  func writeToFile(content: String) {

let contentToAppend = content+"\n"


//Check if file exists
if let fileHandle = NSFileHandle(forWritingAtPath: filePathWrite) {
//Append to file
fileHandle.seekToEndOfFile()
fileHandle.writeData(contentToAppend.dataUsingEncoding(NSUTF8StringEncoding)!)
}
else {
//Create new file
do {
try contentToAppend.writeToFile(filePathWrite, atomically: true, encoding: NSUTF8StringEncoding)
} catch {
print("Error creating \(filePathWrite)")
}
}
}

我是这样使用的:

writeToFile(String(locations.last!.coordinate.latitude))

对于上面的行,我收到此错误:“在展开可选值时意外发现 nil”

但是,我用一个随机字符串(例如“hello”)测试了这个函数,它工作正常。对于纬度,它也可以正常工作,因为当它发生变化时我会在屏幕上获得更新的纬度值。

我添加了一个条件来避免 nil 值:

if locations.last!.coordinate.latitude != nil{
writeToFile(String(locations.last!.coordinate.latitude))
}

但现在我得到“CLLocationdegrees 永远不能为零,允许比较 nos”。

所以它不可能为零,但我仍然得到一个错误,因为它是零。我错过了什么?

任何输入将不胜感激

最佳答案

导致“意外发现 nil”的部分是 locations.last 的强制展开。避免使用 ! 强制解包。

您的 if 语句应该只检查 locations.last 是否为 nil:

if locations.last != nil {
writeToFile(String(locations.last!.coordinate.latitude))
}

但是你应该以“正确”的方式做到这一点:

if let last = locations.last {
writeToFile(String(last.coordinate.latitude))
}

关于ios - 写入本地文件时纬度为零值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40048190/

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