2015-08-08 4 views
0

Мое приложение разбивается каждый раз, используя данные функции-прерывания. Из-за этого кода он выходит из строя. Что с этим не так?App Delegate - Load Core Data Swift

 import UIKit 
    import CoreData 

    class MyWordsTableViewController: UITableViewController, NSFetchedResultsControllerDelegate { 


var myList: Array<AnyObject> = [] 


override func viewDidLoad() { 
    super.viewDidLoad() 


    let appDel = UIApplication.sharedApplication().delegate as! AppDelegate 
    let context = appDel.managedObjectContext 
    let freq = NSFetchRequest(entityName: "List") 

    do { 
    try myList = context.executeFetchRequest(freq) 

    } catch { 
    print("error") 
    } 

    tableView.reloadData() 

ответ

1

Делегат для просмотра таблиц в вашем коде не добавляется.

Добавьте их в ваш контроллер представления

class MyWordsTableViewController: UIViewController, UITableViewDataSource, UITableViewDelegate{ 

Добавьте этот код в viewDidLoad

self.Tablename.registerClass(UITableViewCell.self, forCellReuseIdentifier: "Cell") 

    Tablename.dataSource = self 
    Tablename.delegate = self 
    searchBar.delegate = self 

Для основных данных попробуйте следующий код

var appDel: AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate) 
var context: NSManagedObjectContext = appDel.managedObjectContext! 

var fetchRequest = NSFetchRequest(entityName: "List") 

if let fetchResults = appDel.managedObjectContext!.executeFetchRequest(fetchRequest, error: nil) as? [NSManagedObject] { 
    if fetchResults.count != 0{ 

    println(fetchResults) 
    } 
} 
0

Попробуйте это работает для меня (swift 2 Xcode 7 beta 5): (я внес изменения в соответствии с вашим кодом)

import UIKit 
    import CoreData 

    var myList: Array<AnyObject> = [] 

    class MyWordsTableViewController: UITableViewController, NSFetchedResultsControllerDelegate 
    { 
     override func viewDidLoad() 
     { 

       super.viewDidLoad() 

     } 

     override func viewDidAppear(animated:Bool) 
     { 
      //reference to app delegate 

      let appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 

      //reference NSManaged object context 

      let context: NSManagedObjectContext = appDel.managedObjectContext! 


      let freq = NSFetchRequest(entityName: "List") 


      do 
      { 
       try myList = context.executeFetchRequest(freq) 


       NSLog("Number of rows (App): \(myList.count)") 
      } catch _ { NSLog("That went badly...") } 

      tableView.reloadData() 


     } 
    }