2017-02-16 7 views
0

Я извлек данные из веб-службы. Исходя из этих данных, я создал управляемые объекты с помощью следующих команд:Сохраните один конкретный объект с данными ядра в 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 для основных данных, но я бы хотел использовать только одну модель для моего приложения для простоты. Как мне это сделать? Большое спасибо.

+0

Создайте только те основные объекты данных, которые вы хотите сохранить другим объектом, должны быть только объектами класса. –

ответ

0

Легкий способ сохранить только один объект - создать дочерний контекст управляемого объекта, а затем создать свой конкретный объект в этом контексте. Теперь он не будет сохранен в постоянном хранилище, пока вы не вызовете сохранение в родительском контексте. Если вы действительно хотите, чтобы он сохранялся независимо от всех других объектов, тогда создайте одноранговый контекст. Сохранение от сверстника приведет к хранению. Тем не менее, вам нужно будет прочитать эти значения в контексте, чтобы использовать их.

+0

Как создать контексты, управляемые сверстниками? Я попытался использовать 'newBackgroundContext()', но он, похоже, не работает. Если я использую «viewContext», он всегда ссылается на один и тот же управляемый контекст. – lenhhoxung

+0

Контекст равный - это тот, который использует одно и то же постоянное хранилище и находится в очереди вашего предпочтения. Поскольку контексты могут иметь множество параметров, уникальных для вашего приложения, я не могу написать ваш код для создания нового контекста. – adonoho