2015-04-06 5 views
0

Это нигде не найдено. Ive получил основные данные и требует, чтобы они загружались в режим выбора. Как это сделать? Я думаю, что он должен работать с массивом [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.

  2. Тип массива - NSManagedObject, а не String.

  3. Вы не можете сбросить NSManagedObject в строки pickerView. У NSManagedObjects, скорее всего, будут свои собственные переменные, например атрибут имени. В titleForRow вы хотите вернуть что-то вроде return myList[row].name, если вы создали подклассу NSManagedObject.

Если нет, вам нужно будет сделать KVC, чтобы получить значение.

+0

Я все еще не понимаю. У вас нет кусочка, чтобы продемонстрировать это? –

Смежные вопросы