从核心数据中获取关系 swift 4
Fetching a relationship from core data swift 4
我有一个艺术家和专辑实体。我能够从 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
您可以通过实现基于艺术家姓名的简单谓词来实现这一点。见以下代码:
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)")
}
此代码将根据艺术家姓名获取您的完整专辑。从专辑中你可以得到封面。
希望对您有所帮助。
在您的代码中,我看到您有一个 Artist 实例 currentArtist,这意味着您不需要执行新的提取请求,而是使用该关系来获取专辑封面。
let albumSet = currentArtist.albums
let covers = albumSet.map([=10=].cover)
covers
数组现在将包含艺术家的所有封面。
我有一个艺术家和专辑实体。我能够从 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
您可以通过实现基于艺术家姓名的简单谓词来实现这一点。见以下代码:
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)")
}
此代码将根据艺术家姓名获取您的完整专辑。从专辑中你可以得到封面。
希望对您有所帮助。
在您的代码中,我看到您有一个 Artist 实例 currentArtist,这意味着您不需要执行新的提取请求,而是使用该关系来获取专辑封面。
let albumSet = currentArtist.albums
let covers = albumSet.map([=10=].cover)
covers
数组现在将包含艺术家的所有封面。