2015-04-06 100 views
0

它似乎没有找到。我得到核心数据,并需要他们加载到选择器视图。怎么做?我认为它需要使用数组[String]而不是数组[AnyObject]。SWIFT核心数据加载到pickerview

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] 
 
    } 
 

回答

0
  1. 不要让取在pickerView委托/数据源请求。您只需执行一次读取操作,并将数据存储在视图控制器中,因此您应该在viewDidLoad中执行此操作。数组类型是NSManagedObject,而不是String。

  2. 您不能将NSManagedObject转储到pickerView行中。 NSManagedObjects可能会有你自己的变量,例如,一个名称属性。在titleForRow中,如果你创建了一个子类NSManagedObject,你想返回类似return myList[row].name的东西。

如果不是,则需要执行KVC才能获取该值。

+0

我还是不明白。你有没有片段代码来证明这一点? –