Извлечение отношений из основных данных Swift 4 - PullRequest
0 голосов
/ 20 мая 2018

У меня есть Исполнитель и Entity Entity.Я могу получить все обложки из альбома.Однако я не могу понять, как выбрать только обложки, назначенные конкретному исполнителю.Насколько я понимаю, это должно иметь какой-то предикат с определенным условием для получения этого.Я пытаюсь поработать над отношениями с основными данными, чтобы получить атрибут покрытия из сущности Album.Пожалуйста, смотрите прикрепленные экраны из редактора основных данных.Как и код, который я пытаюсь реализовать.

var albums = [Album]()
    let request = NSFetchRequest<Album>(entityName: "Album")
    //request.predicate = NSPredicate(format: "recordArtist = %@", albums)
    do {
        albums = try context.fetch(request)
        for cover in albums {
            if ((currentArtist?.name) != nil){
                print(currentArtist.cover)
            }
        }
    }
    catch { print(error)
    }

сущность альбом и исполнитель

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

В вашем коде я вижу, что у вас есть экземпляр Artist, currentArtist, что означает, что вам не нужно делать новый запрос на выборку, а вместо этого использовать отношение для получения обложек альбомов.

let albumSet = currentArtist.albums
let covers = albumSet.map($0.cover)

Массив covers теперь будет содержать все обложки для художника.

0 голосов
/ 20 мая 2018

Этого можно добиться, внедрив простой предикат на основе имени исполнителя.см. следующий код:

var albums = [Album]()
let request = NSFetchRequest<Album>(entityName: "Album")
request.predicate = NSPredicate(format: "recordArtist.name = %@", "<ProvideArtistNameHere>")
do {
    albums = try context.fetch(request)
    if albums.count > 0 {
        // You have found cover
    }
}
catch {
    print("Error = \(error.localizedDescription)")
}

Этот код будет загружать ваши полные альбомы на основе имени исполнителя.Из альбома вы можете получить обложку.

Надеюсь, это поможет вам.

...