2017-04-18 3 views
-1

他の人が同様の質問をしましたが、回答が私には役に立たなかった。私はコアデータとテーブルビューを作成しようとしていますし、私は私のfetchRequestおよび/またはmanagedObjectContextがNSFetchedResultsControllerのインスタンスには、nill以外のfetchRequestとmanagedObjectContextが必要です。 '

nilをされているエラーメッセージが出続ける
class CustomTableViewController: UITableViewController, 
NSFetchedResultsControllerDelegate { 

var coreDataContext = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext 


@available(iOS 10.0, *) 
fileprivate lazy var fetchedResultsController: NSFetchedResultsController<Movie> = { 
    // Initiate the query 
    let fetchRequest: NSFetchRequest<Movie> = Movie.fetchRequest() as! NSFetchRequest<Movie> 

    // Sort the data 
    fetchRequest.sortDescriptors = [NSSortDescriptor(key:"title", ascending: true)] 

    NSLog("Request: %@, Context: %@", fetchRequest, self.coreDataContext);   
    let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.coreDataContext, sectionNameKeyPath: nil, cacheName: nil) 

    fetchedResultsController.delegate = self 
    return fetchedResultsController 
}() 


override func viewDidLoad() { 
    super.viewDidLoad() 

    navigationController?.setToolbarHidden(false, animated: false) 

    do { 
     // when view loads, run the fetch (query) 
     if #available(iOS 10.0, *) { 
      try self.fetchedResultsController.performFetch() 
     } else { 
      // Fallback on earlier versions 
     } 
    } catch { 
     let fetchError = error as NSError 
     print("Unable to Perform Fetch Request") 
     print("\(fetchError)") 
    } 
    } 

誰が、何が間違っている任意のアイデアを持っていますか?私は映画の中で呼ばれるエンティティを持っている

Request: (null), Context: <NSManagedObjectContext: 0x1701db4e0> 

:また、それは重要、しかし、わからない場合は私のプロジェクトは

また、Objective-Cのとスウィフトの両方のミックス、私の上記のコードをプリントアウトからNSLog("Request: %@, Context: %@", fetchRequest, self.coreDataContext)です3つのString属性を持つxcdatamodeld私はまた、独自のMovie.swiftファイルでこのような作品のためにクラスを作成しました:

import UIKit 
import CoreData 

class Movie: NSManagedObject { 

} 
+0

Movieクラスについて特別なことはありますか? – matt

+0

私は元の投稿の最後にMovieクラスに関する情報を追加しました。 – RobertSmith

+0

さて、そこに行くよ。フェッチリクエストはありません。 – matt

答えて

1

問題はあなたMovieクラスは、フェッチ要求を生成するためのコードを持っていないということです。

@nonobjc public class func fetchRequest() -> NSFetchRequest<Movie> { 
    return NSFetchRequest<Movie>(entityName: "Movie"); 
} 

解決策:ムービークラスファイルを完全に削除します。データモデルで

、自動コード生成を行うには、あなたの作品のエンティティを設定します。

enter image description here

問題を解決します。 Xcodeはエンティティのクラスファイルを作成する方法を知っています。だからそれを許すだけで、すべてがうまくいくでしょう。

+0

ありがとうございました。私は助けに感謝します! – RobertSmith

関連する問題