无法获取具有 SQL 等条件的核心数据

Posted

技术标签:

【中文标题】无法获取具有 SQL 等条件的核心数据【英文标题】:Unable to fetch core data with condition like SQL 【发布时间】:2019-10-24 06:13:01 【问题描述】:

让我在 swift ios 中拥有一个核心数据数据库 我有一个实体:“玩家” 在这个实体中,有三行。 “玩家 ID”、“玩家名称”、“团队名称”

并成功将数据保存在这个结构中。

我的问题是 我想用像 sql 这样的查询来获取数据 我想这样获取

where (Team_name == "Barcelona")



array = [player_name(index.row)]


请帮帮我。

我的提取码还不正确。我在谷歌上搜索并找到了这个

let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Player")

// Add Sort Descriptor
let sortDescriptor = NSSortDescriptor(key: "team_name", ascending: true)
fetchRequest.sortDescriptors = [sortDescriptor]

// Add Predicate
let predicate = NSPredicate(format: "team_name CONTAINS[c] %@", "Barcelona")
fetchRequest.predicate = predicate

do 
    let records = try managedObjectContext.fetch(fetchRequest) as! [NSManagedObject]

    for record in records 
        print(record.value(forKey: "player_name") ?? "no name")
    

 catch 
    print(error)

【问题讨论】:

可以分享获取请求代码吗? Jok3r,已更新。 您需要使用developer.apple.com/documentation/coredata/nsfetchrequest 和developer.apple.com/documentation/foundation/nspredicate 来获取过滤后的数据 你得到了什么结果? 它没有运行。得到错误。我比较新鲜。请给我一个适合这种情况的示例代码 【参考方案1】:

谓词和排序描述符区分大小写。

如果属性是Team_name,排序描述符和谓词必须是

let sortDescriptor = NSSortDescriptor(key: "Team_name", ascending: true)

let predicate = NSPredicate(format: "Team_name CONTAINS[c] %@", "Barcelona")

还有

print(record.value(forKey: "Player_name") ?? "no name")

【讨论】:

以上是关于无法获取具有 SQL 等条件的核心数据的主要内容,如果未能解决你的问题,请参考以下文章

sql查询获取具有多个条件的数据

向核心数据添加属性但无法获取 SQL 文件以匹配

核心数据获取唯一属性

SQL Server通过条件搜索获取相关的存储过程等对象

核心数据谓词根据关系获取数据,错误为无法解析格式字符串

核心数据 - NSPredicate 用于具有相同列且满足另一个条件的对象