2017-06-02 9 views
0

私は学校のプロジェクトのためのアプリで働いています。アプリは、顧客とメールアドレスの名前を持つ異なる顧客とタスクの名前(タスクの名前と1時間あたりの価格)を管理する必要があります。 アプリはこのデータから請求書を作成する必要があります。ピッカービューの中核データからのデータ

私の問題は、顧客とタスク(コアデータに格納されている)から2つのピッカービューでデータを取得する方法です。完全なプロジェクトへ

リンク: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 
} 
} 

のために、これは顧客のリソースであるリソースであります

以下のViewCon 2つのピッカービューが存在する必要があります。最初のピッカービューには顧客が表示されます。 2番目のピッカービューにはタスクが表示されます。

// 
// 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() 
} 
} 

誰かが私を助けてくれることを願っています。 私はすでに助けてくれてありがとうと言っています。

答えて

0

あなたはコードの下のようなデータを取得することができます:ここで

はあなたのコントローラであり、単にペーストをコピーし、それが仕事を取得してください。

import UIKit 

class RechnungViewController: UIViewController , UIPickerViewDelegate, UIPickerViewDataSource { 


@IBOutlet weak var pickerViewKunde: UIPickerView! 

@IBOutlet weak var pickerViewAufgabe: UIPickerView! 

@IBOutlet weak var anzahlStundenField: UITextField! 


var allKunden = [Kunde]() 

@IBAction func rechnungBtn(_ sender: Any) { 
} 


override func viewDidLoad() { 
    super.viewDidLoad() 

    //Temp Add data 
    var kun = Kunde() 
    let arr : ArrayKundeResource = ArrayKundeResource() 
    kun = arr.insertKunde(withName: "JIGAR", andEmail: "[email protected]") 
    print(kun.email) 
    print(kun.name) 
//This is for temporary adding data inside coredata so you can remove this. 

    //get all customer 
    self.getAllCustomer() 
} 

func getAllCustomer() { 

    let arr : ArrayKundeResource = ArrayKundeResource() 
    self.allKunden = arr.getList() 

    print(self.allKunden.count) 
} 

//pickerview datasource methods 
func numberOfComponents(in pickerView: UIPickerView) -> Int { 
    return 1 
} 

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
    return self.allKunden.count 
} 

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
    let kundObj = self.allKunden[row] as Kunde 
    return kundObj.name 
} 

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    let kundObj = self.allKunden[row] as Kunde 
    print(kundObj.name) 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 

} 
関連する問題