从核心数据swift获取关系4

时间:2018-05-20 10:17:25

标签: ios swift core-data nsfetchrequest

我有一个艺术家和专辑实体。我能够从Album实体中检索所有封面。但是,我无法弄清楚如何只获取分配给特定艺术家的封面。据我所知,这应该有一些具有特定条件的谓词来检索它。 我正在尝试处理核心数据关系,以从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)
    }

entity album and artist

2 个答案:

答案 0 :(得分:1)

您可以通过基于艺术家姓名实现简单谓词来实现此目的。请参阅以下代码:

library(stringi)
index <- unlist(stri_locate(paste(df2$col2, collapse = ""), 
                            fixed = paste(df1$col1, collapse = "")))
df2[index[1]:index[2],]

#   col1 col2
#9     3    a
#10    3    a
#11    3    b
#12    3    e

此代码将根据艺术家姓名获取您的完整相册。从专辑中你可以获得封面。

我希望这会对你有所帮助。

答案 1 :(得分:0)

在您的代码中,我看到您有一个Artist,currentArtist的实例,这意味着您不需要执行新的获取请求,而是使用该关系来获取专辑封面。

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

covers数组现在将包含艺术家的所有封面。