macos - SwiftUI - Core-Data - 在这种特殊情况下访问包装的值
问题描述
使用下面的代码(见下面的代码),我得到了这种结果(见下面的结果):从下面显示的代码开始(不使用视图......),我怎样才能访问 WrappedValues 而不是这种结果?
感谢您的帮助!
结果:
<Translation: 0x600002132440> (entity: Translation; id: 0x6742c7fbe17c81d1 <x-coredata://0B558EF2-1CC5-4649-9D70-560DAA900FFE/Translation/p21>; data: {
id = 11;
language = English;
wording = "Select the Folders to Rename...";
})
代码:
class FetchWording: ObservableObject {
func fetch (pID: String) -> String {
let fetchRequest: NSFetchRequest<NSFetchRequestResult> = NSFetchRequest(entityName: "Translation")
fetchRequest.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [NSPredicate(format: "id == %@", pID as CVarArg), NSPredicate(format: "language == %@", sDisplayLanguage as CVarArg)])
fetchRequest.fetchLimit = 1
do {
let fetchWording = try ContentView().managedObjectContext.fetch(fetchRequest)
print (fetchWording[0])
} catch {
print ("Error")
}
return (“See you later when it’s working”)
}
}
解决方案
......只是找到这个,不是很令人满意:
let fetchRequest: NSFetchRequest<NSFetchRequestResult> = NSFetchRequest(entityName: "Translation")
fetchRequest.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [NSPredicate(format: "id == %@", pID as CVarArg), NSPredicate(format: "language == %@", sDisplayLanguage as CVarArg)])
fetchRequest.fetchLimit = 1
var fetchWording = [NSManagedObject]()
do {
let records = try ContentView().managedObjectContext.fetch(fetchRequest)
if let records = records as? [NSManagedObject] {
fetchWording = records
}
return **fetchWording.first!.value(forKey: "wording")! as! String**
} catch {
print ("Unexpected error: Function fetch: Wording not found!")
}
推荐阅读
- python - 正则表达式检查是否有尾随或前导空格
- javascript - 从 async / await try..catch 返回值
- json - 如何将单个 json 属性反序列化为多个 Java 字段(如果可能使用转换器)
- vue.js - 如何配置 nuxt 来处理动态页面的 404 错误?
- database - dynamoDB - 2 次查询或 1 次扫描哪个更好?
- javascript - 如何在代码移动到同一 func 中的第二个连接查询之前等待第一个 mysql 连接查询解决
- java - 如何使用 Collections 从 FirebaseFirestore 检索数组?
- .net-core - 抛出异常但中间件上下文响应为 200,但对客户端的响应为 500
- angular - 将 Observable 内容作为数组返回(Angular)
- asp.net-core - 通过中间件在 asp.net 核心中的 NoCache、NoStore 和 must-revalidate 缓存标头