【发布时间】:2023-03-22 16:23:01
【问题描述】:
我正在为一个学校项目开发一个应用程序。该应用程序应管理不同的客户(使用客户名称和电子邮件地址)和任务(使用任务名称和每小时价格)。 那么应用程序应该根据这些数据创建一个账单。
我的问题是如何在两个选择器视图中从客户和任务(存储在核心数据中)获取数据?
完整项目的链接:https://drive.google.com/open?id=0Bwwqhrg9CBVfTU50R2dBaF9ZcUk
(抱歉使用德语变量和函数名:/)
这是任务的资源
//
// ArrayAufgabenResource.swift
// TheServiceAppV2
//
// Created by David Zerweck on 09.04.17.
// Copyright © 2017 David Zerweck. All rights reserved.
//
////////////////////////////////////////////////////
//German = English
//Kunde = Customer
//Aufgabe = Task
////////////////////////////////////////////////////
import Foundation
import CoreData
struct ArrayAufgabeResource: AufgabeResource {
var persistentContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: "TheServiceAppV2")
container.loadPersistentStores {
(storeDescription, error) in
if let error = error {
let nserror = error as NSError
fatalError("Fehler: \(nserror.localizedDescription)")
}
}
return container
}()
func saveContext() {
let context = persistentContainer.viewContext
if context.hasChanges {
do {
try context.save()
} catch {
let nserror = error as NSError
fatalError("Fehler: \(nserror.localizedDescription)")
}
}
}
func insertAufgabe(withName: String, andPreis: String) -> Aufgabe {
let newAufgabe = NSEntityDescription.insertNewObject(forEntityName: "Aufgabe", into: persistentContainer.viewContext) as! Aufgabe
newAufgabe.nameDerAufgabe = withName
newAufgabe.preisProStunde = andPreis
saveContext()
return newAufgabe
}
func remove(aufgabe: Aufgabe) {
persistentContainer.viewContext.delete(aufgabe)
saveContext()
}
func getList() -> [Aufgabe] {
var aufgaben = [Aufgabe]()
let request: NSFetchRequest<Aufgabe> = Aufgabe.fetchRequest()
do {
aufgaben = try persistentContainer.viewContext.fetch(request)
} catch {
print(error.localizedDescription)
}
return aufgaben
}
}
这是客户资源
//
// ArrayKundenResource.swift
// TheServiceAppV2
//
// Created by David Zerweck on 09.04.17.
// Copyright © 2017 David Zerweck. All rights reserved.
//
import Foundation
import CoreData
struct ArrayKundeResource: KundeResource {
var persistentContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: "TheServiceAppV2")
container.loadPersistentStores {
(storeDescription, error) in
if let error = error {
let nserror = error as NSError
fatalError("Fehler: \(nserror.localizedDescription)")
}
}
return container
}()
func saveContext() {
let context = persistentContainer.viewContext
if context.hasChanges {
do {
try context.save()
} catch {
let nserror = error as NSError
fatalError("Fehler: \(nserror.localizedDescription)")
}
}
}
func insertKunde(withName: String, andEmail: String) -> Kunde {
let newKunde = NSEntityDescription.insertNewObject(forEntityName: "Kunde", into: persistentContainer.viewContext) as! Kunde
newKunde.name = withName
newKunde.email = andEmail
saveContext()
return newKunde
}
func remove(kunde: Kunde) {
persistentContainer.viewContext.delete(kunde)
saveContext()
}
func getList() -> [Kunde] {
var kunden = [Kunde]()
let request: NSFetchRequest<Kunde> = Kunde.fetchRequest()
do {
kunden = try persistentContainer.viewContext.fetch(request)
} catch {
print(error.localizedDescription)
}
return kunden
}
}
在下面的 ViewController 中,应该有两个选择器视图。第一个选择器视图应该显示客户。第二个选择器视图应该显示任务。
//
// RechnungViewController.swift
// TheServiceAppV2
//
// Created by David Zerweck on 17.05.17.
// Copyright © 2017 David Zerweck. All rights reserved.
//
////////////////////////////////////////////////////
//German = English
//Kunde = Customer
//Aufgabe = Task
//Rechnung = Bill
////////////////////////////////////////////////////
import UIKit
class RechnungViewController: UIViewController {
@IBOutlet weak var pickerViewKunde: UIPickerView!
@IBOutlet weak var pickerViewAufgabe: UIPickerView!
@IBOutlet weak var anzahlStundenField: UITextField! //number of hours
@IBAction func rechnungBtn(_ sender: Any) {
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
我希望有人可以帮助我。 我已经在说谢谢你的帮助。
【问题讨论】:
标签: ios core-data swift3 uipickerview