SWIFT 核心数据加载到pickerview
Posted
技术标签:
【中文标题】SWIFT 核心数据加载到pickerview【英文标题】:SWIFT core data load to pickerview 【发布时间】:2015-04-06 17:27:49 【问题描述】:它似乎无处可寻。我有核心数据,需要将它们加载到选择器视图。怎么做?我认为它需要使用 array[String] 而不是 array[AnyObject]。
var myList : Array<String> = []
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String!
var appDelegate: AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
var context: NSManagedObjectContext = appDelegate.managedObjectContext!
var request = NSFetchRequest(entityName: "Activity")
var results: Array = context.executeFetchRequest(request, error: nil)!
//???
return myList[row]
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
itemActivityValue = myList[row]
【问题讨论】:
【参考方案1】:不要在 pickerView 委托/数据源中发出 fetch 请求。您只需要获取一次,并且您将数据存储在视图控制器中,因此您应该在 viewDidLoad 中进行。
数组类型是 NSManagedObject,而不是 String。
您不能将 NSManagedObject 转储到 pickerView 行中。 NSManagedObjects 可能会有您自己的变量,例如,名称属性。在 titleForRow 中,如果您创建了子类 NSManagedObject,您希望返回类似 return myList[row].name
的内容。
如果没有,你需要做 KVC 来获取价值。
【讨论】:
我还是不明白。你没有一段代码来证明这一点吗?以上是关于SWIFT 核心数据加载到pickerview的主要内容,如果未能解决你的问题,请参考以下文章
我从核心数据填充 PickerView 并得到错误 Index Out Of Range Swift 5