我有一个名为downloadedPhotoURLs
的变量[NSURL]?
。
我尝试分配返回类型[NSURL]
的函数的结果(非可选)。
我在分配时解包变量downloadedPhotoURLs!
。
我收到错误:
无法指定类型' [NSURL]'的值类型为' [NSURL]'
我不知道如何解决这个问题。
我正在使用Xcode 7测试版(仅因为我必须能够在设备上运行它,但我有免费帐户)
do {
downloadedPhotoURLs! = try NSFileManager.defaultManager().contentsOfDirectoryAtURL(directoryURL, includingPropertiesForKeys: nil, options: nil)
collectionView!.reloadData()
} catch _ {
downloadedPhotoURLs = nil
}
答案 0 :(得分:1)
那里有两个问题......
强行展开downloadedPhotoURLs!
您不能以这种方式分配。如果变量类型是可选的,那么您将以通用方式分配它,例如,如果它不是可选的,...
downloadedPhotoURLs = ...
当您想要读取/访问值时,将使用展开(!
,...)。不是在您想要分配新值时。你在线上正确地做到了:
downloadedPhotoURLS = nil
Swift 2.0中的OptionSetType
您无法在nil
参数中传递options:
。这种方法的签名是:
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引入)。