SWIFT核心数据加载到pickerview

时间:2015-04-06 17:27:49

标签: swift core-data uipickerview

似乎无处可寻。我有核心数据,需要加载到选择器视图。怎么做?我认为它需要使用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 个答案:

答案 0 :(得分:0)

  1. 不要在pickerView委托/数据源中进行获取请求。您只需要执行一次获取,并且您将数据存储在视图控制器中,因此您应该在viewDidLoad中执行此操作。

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

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

  4. 如果没有,你需要做KVC以获取价值。