func loadThumbnails() {
let paths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)
Apple states in The Swift Programming Language:
The for-in loop performs a set of statements for each item in a range, sequence, collection, or progression.
Right now, directoryContent
is just conforming to protocol AnyObject
, so you can't use for loops over it. If you want to do so, you have to do something similar to the following:
for item in directoryContent as [AnyObject] {
//Do stuff
}
contentsOfDirectoryAtPath
returns an NSArray
, whereas you are casting it to AnyObject
. The solution is to cast it to either [AnyObject]?
or NSArray
:
let directoryContent: [AnyObject]? = fileManager.contentsOfDirectoryAtPath(documentsDirectory, error: &error)
or
let directoryContent: NSArray? = fileManager.contentsOfDirectoryAtPath(documentsDirectory, error: &error)
Then use an optional binding before the for loop:
if let directoryContent = directoryContent {
for item:AnyObject in directoryContent {
Looking at the contentsOfDirectoryAtPath
documentation, it states it always returns an array - so what said above can be reduced to unwrapping the return value to either a swift or objc array, with no need to use the optional binding:
let directoryContent: [AnyObject] = fileManager.contentsOfDirectoryAtPath(documentsDirectory, error: &error)!
or
let directoryContent: NSArray = fileManager.contentsOfDirectoryAtPath(documentsDirectory, error: &error)!