作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个名为 downloadedPhotoURLs
的变量,其类型为 [NSURL]?
。
我正在尝试分配返回类型 [NSURL]
的函数的结果(非可选)。
我在分配时解开变量downloadedPhotoURLs!
。
我收到错误:
Cannot assign a value of type '[NSURL]' to a value of type '[NSURL]'
我不知道如何解决这个问题。
我正在使用 Xcode 7 beta(只是因为我必须能够在设备上运行它,但我有免费帐户)
do {
downloadedPhotoURLs! = try NSFileManager.defaultManager().contentsOfDirectoryAtURL(directoryURL, includingPropertiesForKeys: nil, options: nil)
collectionView!.reloadData()
} catch _ {
downloadedPhotoURLs = nil
}
最佳答案
有两个问题...
强制解开downloadedPhotoURLs!
您不能以这种方式分配。如果变量类型是可选的,您将以常见的方式分配给它,就像如果它不是可选的,...
downloadedPhotoURLs = ...
当您确实想要读取/访问值时,可以使用展开 (!
, ...)。当您确实想分配新值时则不然。您在线上做得正确:
downloadedPhotoURLS = nil
Swift 2.0 中的 OptionSetType
您不能在 options:
参数中传递 nil
。该方法的签名是:
func contentsOfDirectoryAtURL(url: NSURL,
includingPropertiesForKeys keys: [String]?,
options mask: NSDirectoryEnumerationOptions) throws -> [NSURL]
并且 NSDirectoryEnumerationOptions
是:
struct NSDirectoryEnumerationOptions : OptionSetType {
init(rawValue: UInt)
static var SkipsSubdirectoryDescendants: NSDirectoryEnumerationOptions { get }
static var SkipsPackageDescendants: NSDirectoryEnumerationOptions { get }
static var SkipsHiddenFiles: NSDirectoryEnumerationOptions { get }
}
所以它应该看起来像:
downloadedPhotoURLs = try NSFileManager.defaultManager().contentsOfDirectoryAtURL(NSURL(string: "")!,
includingPropertiesForKeys: nil,
options:NSDirectoryEnumerationOptions(rawValue: 0))
有关 OptionSetType 的更多信息(随 Swift 2.0 引入)。
关于swift - Swift 2 错误 : Cannot assign a value of type '[NSURL]' to a value of type '[NSURL]' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31459972/
我是一名优秀的程序员,十分优秀!