Moh*_*ein -1 syntax nsurl nsdata throws swift
这里的“throws”关键字是什么意思:

这段代码需要很长时间才能执行,我认为上图中的“throws”关键字相关:
let url = URL(string:"\(APIs.postsImages)\(postImg)")
let imgData = try? Data.init(contentsOf: url)
self.postImage.image = UIImage.init(data: imgData)
Run Code Online (Sandbox Code Playgroud)
init() throws可以返回有关失败的更多信息,并让调用者决定他们是否关心它。在此处阅读有关它的有用帖子。
要指示函数、方法或初始化程序可以抛出错误,您需要
throws在函数声明中的参数后面写上关键字。标记throws为 的函数称为抛出函数。如果函数指定了返回类型,则在返回箭头之前写入 throws 关键字。
func thisFunctionCanThrowErrors() throws -> String
Run Code Online (Sandbox Code Playgroud)
或者在实际代码中它可能是这样的:
enum PossibleErrors: Error {
case wrongUsername
case wrongPassword
}
func loggingIn(name: String, pass: String) throws -> String {
if name.isEmpty {
throw PossibleErrors.wrongUsername
}
if pass.isEmpty {
throw PossibleErrors.wrongPassword
}
return "Fine"
}
Run Code Online (Sandbox Code Playgroud)
在throwing functions这样必须使用以下试运营的一个被称为:
使用init() throws您可以中断类初始化程序的执行,而无需填充所有存储的属性:
class TestClass {
let textFile: String
init() throws {
do {
textFile = try String(contentsOfFile: "/Users/swift/text.txt",
encoding: NSUTF8StringEncoding)
catch let error as NSError {
throw error
}
}
}
Run Code Online (Sandbox Code Playgroud)
在一个结构中,你甚至可以避免do/catch块:
struct TestStruct {
var textFile: String
init() throws {
textFile = try String(contentsOfFile: "/Users/swift/text.txt",
encoding: NSUTF8StringEncoding)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2176 次 |
| 最近记录: |