2017-02-16 12 views
0

Webサービスからデータを取得しました。このデータから、私は、次のコマンドによって管理されるオブジェクトを作成しました:Swiftにコアデータを持つ特定のオブジェクトを保存します

コードで
let videoTitle = snippet["title"] as! String 
let videoDescription = snippet["description"] as! String 
let videoThumbnail = ((snippet["thumbnails"] as! NSDictionary)["default"] as! NSDictionary)["url"] as! String 
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { 
    return 
} 
let managedContext = appDelegate.persistentContainer.viewContext 
let entity = NSEntityDescription.entity(forEntityName: "YTVideo", 
             in: managedContext)! 
let video = YTVideo(entity: entity, insertInto: managedContext) 
video.videoID = videoID 
video.videoTitle = videoTitle 
video.videoDescription = videoDescription 
video.videoThumbnail = videoThumbnail 
video.isFavorite = false 
ytVideos.append(video) 

ytVideosが配列です。 オブジェクトを保存するオプションが追加されました。彼はオブジェクトを保存することを選択した場合、私はコマンドを使用して永続ストアに入れたい:

managedContext.save() 

しかし、これは私が作成したすべてのオブジェクトを保存します。 特定のオブジェクトを保存するにはどうすればよいですか? もちろん、私はいつも別のモデルを作成して、このモデルのオブジェクトで遊んでからコアデータとしてモデルYTVideoを使うことができますが、簡単にするためにアプリケーションには1つのモデルしか使用しません。どうしたらいいですか? 多くのありがとうございます。

+0

他のオブジェクトを保存したいコアデータオブジェクトのみを作成するには、クラスオブジェクトのみにする必要があります。 –

答えて

0

オブジェクトを1つだけ保存する簡単な方法は、子の管理オブジェクトコンテキストを作成し、そのコンテキストで特定のオブジェクトを作成することです。親コンテナでsaveを呼び出すまで、永続ストアに実際には保存されません。本当に他のすべてのオブジェクトから独立して存続させたい場合は、ピアコンテキストを作成してください。ピアから保存するとストアにプッシュされます。つまり、それらの値をコンテキストに読み込んで使用する必要があります。

+0

ピア管理コンテキストを作成するには?私は 'newBackgroundContext()'を使用してみましたが、動作していないようです。私が 'viewContext'を使うと、常に同じ管理されたコンテキストを参照します。 – lenhhoxung

+0

ピアコンテキストとは、同じ永続ストアを使用し、環境設定のキューにあるものです。コンテキストはアプリケーション固有の多くのパラメータを持つことができるため、コードを記述して新しいコンテキストをインスタンス化することはできません。 – adonoho

関連する問題