Ios 尝试返回要在PickerView中使用的数据库行
嗨,我是ios和编程新手 我尝试使用pickerview从CoreData实体加载选项 不知道该怎么做这是我到目前为止所知道的,但是“returnoutput[row]”一行不正确。我能帮忙做这件事吗?谢谢Ios 尝试返回要在PickerView中使用的数据库行,ios,swift,core-data,Ios,Swift,Core Data,嗨,我是ios和编程新手 我尝试使用pickerview从CoreData实体加载选项 不知道该怎么做这是我到目前为止所知道的,但是“returnoutput[row]”一行不正确。我能帮忙做这件事吗?谢谢 // // storeSelect.swift // assignment2_18094969 // // Created by James Duncombe on 25/1/17. // Copyright © 2017 James Duncombe. All rights res
//
// 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.
}
*/
}
//
//storeSelect.swift
//转让2_18094969
//
//詹姆斯·邓科姆于2017年1月25日创作。
//版权所有©2017詹姆斯·邓科姆。版权所有。
//
导入UIKit
导入CoreData
类存储选择:UIViewController、UIPickerViewDeleteGate、UIPickerViewDataSource{
让managedObjectContext=(UIApplication.shared.delegate为!AppDelegate)。persistentContainer.viewContext
//pickerview小部件的出口
@IBVAR选择器:UIPickerView!
变量输出:[StoreTable]=[]
//用于存储pickerview数据的var(将其更改为适合以后的db)
//var pickerDataSource=[“Narellan”、“Camden”、“Campbelltown”、“Liverpool”、“Parramatta”];//忽略此atm
重写func viewDidLoad(){
super.viewDidLoad()
输出=retrieveRows()
self.picker.dataSource=self
self.picker.delegate=self
//加载视图后执行任何其他设置。
}
重写函数didReceiveMemoryWarning(){
超级。我收到了记忆警告()
//处置所有可以重新创建的资源。
}
func numberOfComponents(在pickerView:UIPickerView中)->Int{
返回1
}
func pickerView(pickerView:UIPickerView,numberOfRowsInComponent:Int)->Int{
返回output.count;
}
func pickerView(pickerView:UIPickerView,titleForRow行:Int,forComponent组件:Int)->String{
返回输出[行]
}
func retrieveRows()->[StoreTable]{
让entityDescription=NSEntityDescription.entity(在:managedObjectContext中,名为“StoreTable”)
let request=NSFetchRequest()
request.entity=entityDescription//获取可饮用表
var storeObjs=[StoreTable]()
做{
尝试storeObjs=managedObjectContext.fetch(请求)as![StoreTable]}
抓住{
//显示一些错误消息
}
返回storeObjs;
}
//输出变量存储PizzaTable数据,并使用retrieve方法显示
/*
//标记:-导航
//在基于故事板的应用程序中,您通常需要在导航之前做一些准备
覆盖功能准备(对于segue:UIStoryboardSegue,发送方:有吗?){
//使用segue.destinationViewController获取新的视图控制器。
//将选定对象传递给新的视图控制器。
}
*/
}
上述函数应返回一个字符串。不是coredata实体。如果实体StoreTable具有String
属性,例如,假设其名称为String
类型,则函数应为
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return return output[row].name
}
错误是无法将表达式类型StoreTable转换为字符串?storable是实体,对吗?是StoreTable是实体它的属性是什么?它有名称吗?只有“name”作为属性(字符串)。
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return return output[row].name
}