2017-09-23 67 views
0

概述:

我想學習如何獲取從核心數據存儲的某些統計特性(例如總和,平均,最小值,最大值)。我用下面的代碼成功地檢索了一個字典的平均值,但是我必須以字典的形式得到結果。如何獲得CoreData表達查詢的結果沒有錯誤

目標:

理想情況下,我想通過擴展,是由Xcode的核心數據自動生成自定義管理對象類「聯繫」管理對象模型得到的結果與查詢的全部結果一起。到目前爲止,我一直沒有成功。無論我嘗試什麼,我都會得到類似的錯誤。

錯誤:

NSManagedObjectResultType not compatible with contents of propertiesToFetch'or similar 

代碼:

func avgdemoFloat()->Float{ 
let appDelegate = UIApplication.shared.delegate as! AppDelegate 
let context = appDelegate.persistentContainer.viewContext 
let result:Float = 0 
do{ 

    let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Contact") 
    let keypathExp = NSExpression(forKeyPath: "demoFloat") 
    let expression = NSExpression(forFunction: "average:", arguments: [keypathExp]) 
    let avg = NSExpressionDescription() 
    avg.expression = expression 
    avg.name = "avg" 
    avg.expressionResultType = .floatAttributeType 

    request.returnsObjectsAsFaults = false 
    request.propertiesToFetch = [avg] 

    let results = try context.fetch(request) 
    print(results) 
} 

我沒有足夠的經驗來排序了這一點。謝謝你的幫助。

+0

對不起,我不太明白的問題,你想找到一個特定領域的平均水平? – user1046037

+0

是的,我想獲得Flover的'demofloat'的平均值,但這僅僅是一個例子。 – Frederic

回答

0

當您指定propertiesToFetchresultType需要設置如下圖所示:

request.resultType = . dictionaryResultType