As already mentioned, the key uses
fetchRequest.resultType = NSFetchRequestResultType.DictionaryResultType
and
fetchRequest.propertiesToFetch = ["propertyName"]
both are required to do the job
fetchRequest.returnsDistinctResults = true
Swift Dictionaries .
let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let managedContext = appDelegate.managedObjectContext!
let fetchRequest = NSFetchRequest(entityName: "Purchase")
fetchRequest.propertiesToFetch = ["year"]
fetchRequest.resultType = NSFetchRequestResultType.DictionaryResultType
fetchRequest.returnsDistinctResults = true
var error: NSError?
if let results = managedContext.executeFetchRequest(fetchRequest, error: &error) {
var stringResultsArray: [String] = []
for var i = 0; i < results.count; i++ {
if let dic = (results[i] as? [String : String]){
if let yearString = dic["year"]?{
stringResultsArray.append(yearString)
}
}
}
return stringResultsArray
}else {
println("fetch failed: \(error?.localizedDescription)")
}
return []