2017-01-28 5 views
0

안녕하세요, ios 및 프로그래밍 전반에 익숙하지 않습니다.PickerView에서 사용할 데이터베이스 행을 반환하려고 시도합니다.

CoreData 엔티티에서 옵션을로드하는 pickerview를 사용하려고합니다.

잘 모르겠습니다. 지금까지 내가 가지고있는 것이지만 "return output [row]"라는 줄이 맞지 않습니다. 이 작업을 수행하는 방법에 대한 도움을받을 수 있습니까? 감사

// 
// storeSelect.swift 
// assignment2_18094969 
// 
// Created by James Duncombe on 25/1/17. 
// Copyright © 2017 James Duncombe. All rights reserved. 
// 

import UIKit 
import CoreData 

class storeSelect: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource { 

    let managedObjectContext = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext 

    //outlet for the pickerview widget 
    @IBOutlet weak var picker: UIPickerView! 

    var output : [StoreTable] = [] 

    //var to store the pickerview data (change this to suit the db later) 
    //var pickerDataSource = ["Narellan", "Camden", "Campbelltown", "Liverpool", "Parramatta"]; //ignore this atm 

    override func viewDidLoad() { 
     super.viewDidLoad() 


     output = retrieveRows() 

     self.picker.dataSource = self 
     self.picker.delegate = self 

     // Do any additional setup after loading the view. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


    func numberOfComponents(in pickerView: UIPickerView) -> Int { 
     return 1 
    } 

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


    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
     return output[row] 
    } 

    func retrieveRows() -> [StoreTable]{ 
     let entityDescription = NSEntityDescription.entity(forEntityName: "StoreTable", in: managedObjectContext) 
     let request = NSFetchRequest<NSFetchRequestResult>() 
     request.entity = entityDescription // get the table drinkTable 
     var storeObjs = [StoreTable]() 

     do{ 
      try storeObjs = managedObjectContext.fetch(request) as! [StoreTable] } 
     catch { 
      //show some error msg 
     } 


     return storeObjs; 
    } 
    //output variable stores PizzaTable data and displays using the retrieve method 



    /* 
    // MARK: - Navigation 

    // In a storyboard-based application, you will often want to do a little preparation before navigation 
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     // Get the new view controller using segue.destinationViewController. 
     // Pass the selected object to the new view controller. 
    } 
    */ 

} 
+0

해야 우리가 String 유형 인 이름을 가진 가정하자 오류 String으로 표현 형 StoreTable을 변환 할 수 없습니다입니까? –

+0

저장 기능이 바로 엔터티입니까? –

+0

예 StoreTable은 엔티티입니다. –

답변

0
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
    return "abcd" 
} 

위의 함수는 문자열를 반환해야합니다. coredata 엔티티가 아닙니다. StoreTable 기업은 예컨대위한 String 속성이 있습니다 경우, 함수가

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
    return return output[row].name 
} 
관련 문제