【问题标题】:SWIFT core data load to pickerviewSWIFT 核心数据加载到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]
    }
    

【问题讨论】:

    标签: swift core-data uipickerview


    【解决方案1】:
    1. 不要在 pickerView 委托/数据源中发出 fetch 请求。您只需要获取一次,并且您将数据存储在视图控制器中,因此您应该在 viewDidLoad 中进行。

    2. 数组类型是 NSManagedObject,而不是 String。

    3. 您不能将 NSManagedObject 转储到 pickerView 行中。 NSManagedObjects 可能会有您自己的变量,例如,名称属性。在 titleForRow 中,如果您创建了子类 NSManagedObject,您希望返回类似 return myList[row].name 的内容。

    如果没有,你需要做 KVC 来获取价值。

    【讨论】:

    • 我还是不明白。你没有一段代码来证明这一点吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多