gpt4 book ai didi

ios - 错误 : Ambiguous reference to member 'subscript' in Swift 3

转载 作者:可可西里 更新时间:2023-11-01 05:07:56 24 4
gpt4 key购买 nike

我下载了 Xcode 8 beta 并将我的语法转换为 Swift 3。当我这样做时,我得到了这段代码的同名错误(这在以前没有发生过):

swift 3:

do {
let fileAttributes = try FileManager.default().attributesOfItem(atPath: fileURL.path!) // Error here
let fileSizeNumber = fileAttributes[NSFileSize] as! NSNumber
fileSize = fileSizeNumber.longLongValue
} catch _ as NSError {
print("Filesize reading failed")
}

swift 2:

do {
let fileAttributes = try NSFileManager.defaultManager().attributesOfItemAtPath(fileURL.path!)
let fileSizeNumber = fileAttributes[NSFileSize] as! NSNumber
fileSize = fileSizeNumber.longLongValue
} catch _ as NSError {
print("Filesize reading failed")
}

这是 Swift 3 中的错误,还是我遗漏了什么?

我知道有很多关于同一个错误的问题,但这些问题并不能解决我的问题。我很乐意编辑以进行澄清。

提前致谢!

最佳答案

我认为这样的事情应该可行:

do {
let fileAttributes = try FileManager.default().attributesOfItem(atPath: file.path!)
if let fileSizeNumber = fileAttributes["NSFileSize"] as? NSNumber {
let fileSize = fileSizeNumber.int64Value

}
} catch let error as NSError {
print("Filesize reading failed: \(error.debugDescription)")
}

因为 NSFileSize 只是一个常量字符串,所以我用它的原始值替换了它。看起来没问题 - 但当然最好找到官方的等价物(我现在没能做到,所以不要认为这个解决方案是理所当然的,它只是一种解决方法)。

Xcode 8 GM 更新:

使用 FileAttributeKey.size 比使用硬编码常量更好(感谢 @rudy 的提醒)。这是一个更新的示例:

do {
let attributes = try FileManager.default.attributesOfItem(atPath: file.path)
if let size = attributes[FileAttributeKey.size] as? NSNumber {
let fileSize = size.int64Value
print(fileSize)
}
} catch {
print(error.localizedDescription)
}

关于ios - 错误 : Ambiguous reference to member 'subscript' in Swift 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37874157/

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