取回请求返回{(//值)}而不仅仅是值
问题描述:
我有一个非常困难的时间搞清楚如何提取实体之间的关系值。我有一个Food实体和一个Meal实体。为了演示目的,我只列出了每个属性的1个属性。用于餐食的标题和用于食物的蛋白质。我的人际关系是餐饮和食物之间的关系,多对多。我想要做的是获取一份膳食并返回与该膳食相关的蛋白质值。我将最终通过日期提取膳食,然后从该膳食中提取营养信息。我发现的解决方案不仅返回了模拟器标签图片所示的值。请任何帮助将非常感激!我有一种感觉,有一种更简单的方法来做我想做的事情,但我一直在寻找几个小时,但无法弄清楚。取回请求返回{(//值)}而不仅仅是值
我尝试发布图片,但它不会让我这样我会发布我的代码,发生了什么。
ViewController.swift
import UIKit
import CoreData
class ViewController: UIViewController {
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
//================================
//CREATE MEAL AND FOOD
//================================
let newMeal = NSEntityDescription.insertNewObject(forEntityName: "Meal", into: context) as! Meal
newMeal.title = "Meal 1"
let newFood = NSEntityDescription.insertNewObject(forEntityName: "Food", into: context) as! Food
newFood.protein = "20"
newFood.setValue(newMeal, forKey: "meal")
//================================
//FETCH REQUEST
//================================
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Meal")
let sortDescriptor = NSSortDescriptor(key: "title", ascending: true)
request.sortDescriptors = [sortDescriptor]
request.returnsObjectsAsFaults = false
do {
//===============================
//EXTRACT RELATIONSHIP DATA
//==============================
let results = try context.fetch(request) as NSArray
for res in results {
let data = res as! Meal
let item = data.food
let strs = item.value(forKey: "protein")
self.label.text = "\(strs)"
}
} catch {
print ("error")
}
}
我的标签显示这...
{()}
我需要简单地拉 '20' 出来。尝试将label.text值设置为str!字符串也不会工作。任何指导?非常感谢你
答
下面会做什么?
self.label.text = strs
答
我想通了.....
import UIKit
import CoreData
class ViewController: UIViewController {
var item:NSSet = []
var strs:NSSet = []
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
//================================
//CREATE MEAL AND FOOD
//================================
let newMeal = NSEntityDescription.insertNewObject(forEntityName: "Meal", into: context) as! Meal
newMeal.title = "Meal 1"
let newFood = NSEntityDescription.insertNewObject(forEntityName: "Food", into: context) as! Food
newFood.protein = "20"
newFood.setValue(newMeal, forKey: "meal")
//================================
//FETCH REQUEST
//================================
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Meal")
let sortDescriptor = NSSortDescriptor(key: "title", ascending: true)
request.sortDescriptors = [sortDescriptor]
request.returnsObjectsAsFaults = false
do {
//===============================
//EXTRACT RELATIONSHIP DATA
//==============================
let results = try context.fetch(request) as! [Meal]
for res in results {
item = res.food
strs = item.value(forKey: "protein") as! NSSet
let array = strs.allObjects
print(array[0])
self.label.text = String(format: "%@", array[0] as! CVarArg)
}
} catch {
print ("error")
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
感谢您的帮助
不,这是行不通的跟踪时 – lilbill412
您能查看“项目”的类型?它是什么? –
你指的是什么变量? – lilbill412