swift 3核心数据获取结果

时间:2017-04-28 10:25:08

标签: macos swift3 xcode8

我有一个核心数据模式与实体"用户" 有两个属性" 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

1 个答案:

答案 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)")
}