-1

标准的 do-catch 块在 Swift 中如下所示:

let jsonEncoder = JSONEncoder()
do {
  let file = try jsonEncoder.encode(pets)
} catch {
  return
}
// want to access file here

我的问题是访问在 do-catch 块中创建的变量的最佳做法是什么?我的直觉告诉我首先在块外创建一个未包装的可选变量(let file: Data!),但感觉不是很优雅。有一个更好的方法吗?

4

1 回答 1

1

您可以简单地在块file范围之外声明,然后在do-catch块之后访问它do-catch。这是有效的,因为您是从catch块中返回的,因此您永远无法在未初始化的情况下到达print语句- 它要么从块中获取值,要么函数从块中返回,在这种情况下永远不会执行。filedocatchprint

let jsonEncoder = JSONEncoder()
let file: Data
do {
    file = try jsonEncoder.encode(pets)
} catch {
    return
}
// Do whatever you need with file
print(file)
于 2020-07-31T10:48:15.360 回答