0
Setup: Xcode version: 7.1 Beta,
Firmware: iOS 9,
我試圖從核心數據訪問一個值來獲得購買產品的總計。我已經檢查在同一個問題,但它是在的OBJ C. CoreData細節:iOS Swift總結CoreData屬性值
實體:車
屬性:FNAME(字符串),fCost(整數16),fQuantity(整數16)
檢索代碼如下:
let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let managedContext : NSManagedObjectContext = appDelegate.managedObjectContext!
let fetchRequest = NSFetchRequest(entityName: "Cart")
fetchRequest.returnsObjectsAsFaults = false
do {
let results = try managedContext.executeFetchRequest(fetchRequest)
print("===\(results)")
} catch let error as NSError {
print(error)
}
打印(結果)輸出是如下:
[<Tif.Cart: 0x7f8d19e60d00> (entity: Cart; id: 0xd000000000240000 <x-coredata://5D617B2C-35BC-43B4-BEC1-40AABA96C558/Cart/p9> ; data: {
fCost = 30;
fName = "Milk";
fQuantity = 2;
}), <Tif.Cart: 0x7f8d19e7cd80> (entity: Cart; id: 0xd000000000280000 <x-coredata://5D617B2C-35BC-43B4-BEC1-40AABA96C558/Cart/p10> ; data: {
fCost = 60;
fName = "Butter";
fQuantity = 1;
})]
我正在使用tableView單元顯示核心數據並執行總計。
var cart = [NSManagedObject]()
let order = cart[indexPath.row]
cell.fNLabel.text = order.valueForKey("fName")! as? String
cell.fCLabel.text = "Rs \(order.valueForKey("fCost") as! NSNumber)"
cell.fQLabel.text = "\(order.valueForKey("fQuantity") as! NSNumber)"
let fQ = order.valueForKey("fQuantity") as! Int
let fC = order.valueForKey("fCost") as! Int
let total = fQ * fC
totalArray.append(total)
grandTotal = totalArray.sum() // sum() is an extension that calculates the sum of integer values
print(grandTotal)
grandTotalLabel.text = "\(grandTotal)"
cell.fTLabel.text = "Rs \(total)"
我得到grandTotal,但每次我拉表時,值都被添加到最後一個值。
我也讀過關於使用NSFetchRequestController選項,但我根本無法使用它。
對不起,我只是說清楚。我想獲得所有fQuantity * fCost總和的grandTotal。例如:fName:Milk,fQuantity:2,fCost:30. fName:Butter,fQuantity:1,fCost = 60.所以我想得到(2 * 30)+(1 * 60)= 160 - > grandTotal。你的解決方案正在發揮作用,但它給我的成本(30)牛奶+成本(60)黃油= 90.這可能很容易,但嘗試了很多東西,我認爲我只是使它太複雜。你能更新你的解決方案嗎?謝謝 –
道歉,我忽略了數量。我想你是在想這個,一個簡單的循環就足夠了,我會更新我的答案... –
好吧,我得到它的工作。我刪除了我的評論,因爲它沒有意義。你的答案有效。只需添加valueForKey。請接受編輯,以便我可以接受答案。我在編程方面還不夠成熟。感謝您的理解。 –