Es fällt mir sehr schwer herauszufinden, wie Beziehungswerte zwischen Entitäten extrahiert werden. Ich habe eine Food-Entität und eine Meal-Entität. Zu Demonstrationszwecken habe ich einfach jeweils 1 Attribut aufgelistet. Ein Titel für Essen und Protein für Essen. Meine Beziehungen sind Essen und Essen mit umgekehrter Beziehung, viele zu viele. Ich möchte in der Lage sein, eine Mahlzeit zu holen und den Proteinwert zurückzugeben, der mit dieser Mahlzeit verbunden ist. Ich werde schließlich Mahlzeiten nach Datum holen und dann Ernährungsinformationen aus dieser Mahlzeit ziehen. Die Lösung, die ich gefunden habe, gibt mehr als nur den Wert zurück, wie Sie auf dem Bild des Simulatorlabels sehen können. Bitte jede Hilfe wäre sehr willkommen! Ich habe das Gefühl, dass es einen einfacheren Weg gibt, das zu tun, was ich versuche, aber ich habe stundenlang gesucht und kann es nicht herausfinden.Fetch Request liefert {(// Wert)} statt nur
Ich habe versucht, Bilder zu posten, aber es wird mich nicht lassen, also werde ich meinen Code posten und was passiert.
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")
}
}
My Label dies anzeigt ...
{()}
Ich muss einfach die '20' herausziehen. Versuchen Sie, den Wert label.text auf str as zu setzen! String funktioniert auch nicht. Irgendeine Führung ?? Vielen Dank
Nein, es funktioniert nicht – lilbill412
Können Sie die Art der "Punkt" überprüfen, wenn Tracing? Was ist es? –
Auf welche Variable beziehen Sie sich? – lilbill412