我有一个核心数据模式与实体"用户" 有两个属性" firstName"和" secondName"
这实际上是我获取结果的代码:
var content:[String] = []
func RequestData() {
let appdelegate = NSApplication.shared().delegate as! AppDelegate
let context = appdelegate.persistentContainer.viewContext
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Kunden")
request.returnsObjectsAsFaults = false
do {
let results = try context.fetch(request)
if results.count > 0 {
for result in results as! [NSManagedObject] {
if let firstname = result.value(forKey: "firstname") as? String {
content.append(firstname)
}
if let secondname = result.value(forKey: "secondname") as? String {
content.append(secondname)
}
}
}
tbl_kunden.reloadData()
} catch {
print("ERROR")
}
}
这很好用。 问题是。我不相信那个
var content:[String] = []
是获取结果的正确变量。 因为print(内容)的输出是:
[&#34; Max&#34;,&#34; Mustermann&#34;,&#34; Max2&#34;,&#34; Mustermann2&#34;,&#34; Max3&#34;,& #34; Mustermann3&#34;]
哪种变量类型最适合这种情况?
我认为结果应该是这样的:
+ID
++Max
++Mustermann
+ID
++Max2
++Mustermann2
+ID
++Max3
++Mustermann3
答案 0 :(得分:0)
您应该创建属于User
的子类的自定义NSManagedObject
对象。
https://developer.apple.com/reference/coredata/nsmanagedobject
但如果您不需要自定义逻辑,则可以将变量更改为Int
:[String]
Dictionary
:
var content:[Int: [String]] = [:]
并附加如下数据:
if let id = result.value(forKey: "firstname") as? Int {
let firstName = result.value(forKey: "firstname") as? String ?? "Unknown"
let secondName = result.value(forKey: "secondname") as? String ?? "Unknown"
let user = [id: [firstName, lastName]]
print("Fetched user: \(user.debugDescription)")
}