Max*_*xim 4 sqlite core-data objective-c nsfetchrequest swift
我如何在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)
}
Run Code Online (Sandbox Code Playgroud)
我想获得"docID"的不同值,但我获得了所有实体:(
谢谢你的帮助!
你需要设置
request.resultType = NSFetchRequestResultType.DictionaryResultType
Run Code Online (Sandbox Code Playgroud)
它返回字典,但不同的过滤器应该有效.
如果你不想沿着那条路走下去,请在内存中过滤(也推荐).然后进行正常的提取
let distinct = NSSet(array: results.valueForKeyPath("docID") as [String])
Run Code Online (Sandbox Code Playgroud)
使用Swift 2.0我更喜欢
let distinct = NSSet(array: results.map { $0.docID })
Run Code Online (Sandbox Code Playgroud)
如前所述,关键是使用
fetchRequest.resultType = NSFetchRequestResultType.DictionaryResultType
Run Code Online (Sandbox Code Playgroud)
和
fetchRequest.propertiesToFetch = ["propertyName"]
Run Code Online (Sandbox Code Playgroud)
两者都是不同的工作所必需的
fetchRequest.returnsDistinctResults = true
Run Code Online (Sandbox Code Playgroud)
下一步是将结果作为 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 []
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8025 次 |
| 最近记录: |