Swift 4个数据读取选项
Swift 4 Data reading options
此 Objective C 代码行到 Swift 4 的正确翻译是什么?
NSData *mappedData =
[NSData dataWithContentsOfURL:fileURL
options:NSDataReadingMappedAlways + NSDataReadingUncached
error:&error];
我试过了,但没有编译:
Data(contentsOf: fileUrl, options: Data.ReadingOptions.dataReadingMapped | Data.ReadingOptions.uncached)
你可以试试
do {
// note it runs in current thread
let data = try Data(contentsOf:fileURL, options: [.alwaysMapped , .uncached ] )
print(data)
}
catch {
print(error)
}
试试看
do {
guard let fileURL = URL(string: "") else {
return
}
let data = try Data(contentsOf: fileURL , options: Data.ReadingOptions(rawValue: Data.ReadingOptions.alwaysMapped.rawValue | Data.ReadingOptions.uncached.rawValue))
print(data)
} catch {
//print(error)
}
您的 Swift 代码有两个问题。
首先,options
需要作为数组的元素传入,(不像您那样使用按位或运算符 - 该方法在几个 Swift 版本之前已被弃用):
[.dataReadingMapped, .uncached]
其次,此初始化程序可能会引发异常,因此您需要考虑到这一点。
有两种方法可以做到这一点:在 try-catch 块内,或通过可选链接。
如果您想要捕获和响应特定错误的能力,请使用 try-catch 块:
do {
let data = try? Data(contentsOf: fileURL, options: [.dataReadingMapped, .uncached])
// Do something with data
} catch {
print(error)
}
如果您不关心从特定错误中恢复,您可以使用可选链接:
if let data = try? Data(contentsOf: fileURL, options: [.dataReadingMapped, .uncached]) {
// Do something with data
} else {
// It failed. Do something else.
}
如果您有兴趣从 Objective-C 切换到 Swift,我推荐 Apple 的 Swift 编程语言书:
https://itunes.apple.com/us/book/swift-programming-language/id881256329
此 Objective C 代码行到 Swift 4 的正确翻译是什么?
NSData *mappedData =
[NSData dataWithContentsOfURL:fileURL
options:NSDataReadingMappedAlways + NSDataReadingUncached
error:&error];
我试过了,但没有编译:
Data(contentsOf: fileUrl, options: Data.ReadingOptions.dataReadingMapped | Data.ReadingOptions.uncached)
你可以试试
do {
// note it runs in current thread
let data = try Data(contentsOf:fileURL, options: [.alwaysMapped , .uncached ] )
print(data)
}
catch {
print(error)
}
试试看
do {
guard let fileURL = URL(string: "") else {
return
}
let data = try Data(contentsOf: fileURL , options: Data.ReadingOptions(rawValue: Data.ReadingOptions.alwaysMapped.rawValue | Data.ReadingOptions.uncached.rawValue))
print(data)
} catch {
//print(error)
}
您的 Swift 代码有两个问题。
首先,options
需要作为数组的元素传入,(不像您那样使用按位或运算符 - 该方法在几个 Swift 版本之前已被弃用):
[.dataReadingMapped, .uncached]
其次,此初始化程序可能会引发异常,因此您需要考虑到这一点。
有两种方法可以做到这一点:在 try-catch 块内,或通过可选链接。
如果您想要捕获和响应特定错误的能力,请使用 try-catch 块:
do {
let data = try? Data(contentsOf: fileURL, options: [.dataReadingMapped, .uncached])
// Do something with data
} catch {
print(error)
}
如果您不关心从特定错误中恢复,您可以使用可选链接:
if let data = try? Data(contentsOf: fileURL, options: [.dataReadingMapped, .uncached]) {
// Do something with data
} else {
// It failed. Do something else.
}
如果您有兴趣从 Objective-C 切换到 Swift,我推荐 Apple 的 Swift 编程语言书:
https://itunes.apple.com/us/book/swift-programming-language/id881256329