如何在swift中使用不同的值调用es请求?
这是我的代码:
let appDelegate: AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let context: NSManagedObjectContext = appDelegate.managedObjectContext
let request = NSFetchRequest(entityName: "MedicalData")
request.propertiesToFetch = NSArray(object: "docID")
request.returnsObjectsAsFaults = false
request.returnsDistinctResults = true
var results:NSArray = context.executeFetchRequest(request, error: nil)
for data in results {
var thisData = data as MedicalData
println(thisData.docID)
}
我想获得“docID”的不同值,但我获得了所有实体:(
感谢您的帮助!
答案 0 :(得分:6)
您需要设置
request.resultType = NSFetchRequestResultType.DictionaryResultType
它返回字典,但不同的过滤器应该有效。
如果你不想沿着那条路走下去,请在内存中过滤(也推荐)。做正常的提取然后
let distinct = NSSet(array: results.valueForKeyPath("docID") as [String])
使用Swift 2.0我更喜欢
let distinct = NSSet(array: results.map { $0.docID })
答案 1 :(得分:4)
如前所述,关键是使用
fetchRequest.resultType = NSFetchRequestResultType.DictionaryResultType
和
fetchRequest.propertiesToFetch = ["propertyName"]
两者都是独立工作所必需的
fetchRequest.returnsDistinctResults = true
下一步是将结果作为Swift Dictionaries处理并返回所需的值。
let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let managedContext = appDelegate.managedObjectContext!
//FetchRequest
let fetchRequest = NSFetchRequest(entityName: "Purchase")
fetchRequest.propertiesToFetch = ["year"]
fetchRequest.resultType = NSFetchRequestResultType.DictionaryResultType
fetchRequest.returnsDistinctResults = true
//Fetch
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 []
答案 2 :(得分:-2)
NSPredicate将允许您搜索特定值并仅从核心数据中检索所需的数据:
colorname<-c("Pink", "Red", "Red", "Purple", "Green", "Blue", "Blue", "Blue", "Blue", "Yellow","Yellow","Yellow","Yellow","Yellow","Orange","Black")
在此示例中,我们只希望返回与“docID”列中的字符串匹配的特定值,但NSPredicate是在代码中构建类似SQL的查询的一种方便方法,并且非常灵活。