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

将 plist 加载到核心数据中

从数组中检索索引,使用该索引在pickerview中选择一行

如何在 Swift 中的 if/else 语句中获取数据

Swift 代码正在向核心数据添加不需要的零数据

Swift字典到数组以填充pickerView