gpt4 book ai didi

ios - swift 中循环 ManagedObject 插入的语法

转载 作者:行者123 更新时间:2023-11-28 13:12:56 24 4
gpt4 key购买 nike

在使用 Swift 探索 Core Data 的过程中,我有以下功能在工作,作为测试:

func insertObject (entityName:String) {
var newItem = NSEntityDescription.insertNewObjectForEntityForName(entityName, inManagedObjectContext:managedObjectContext!) as! EventList
let now = NSDate()
newItem.date = now
newItem.eventDescription = “Whatever Anniversary"
}

这似乎可行,但为了使我的函数更有用,我想向它传递一个描述我打算插入的对象的字典。类似于以下内容:

func insertObject (entityName:String,dico:NSDictionary) {
var newItem = NSEntityDescription.insertNewObjectForEntityForName(entityName, inManagedObjectContext:managedObjectContext!) as! EventList
for (key, value) in dico {
println("\(key) : \(value)")
newItem.key = value
}
}

问题来了,这一行是错误的:

    newItem.key = value

正确的语法是什么?

这一行告诉我循环部分工作正常:

    println("\(key) : \(value)")

最佳答案

您可以对托管对象使用键值编码:

func insertObject (entityName:String, dico: [String : NSObject]) {
let newItem = NSEntityDescription.insertNewObjectForEntityForName(entityName, inManagedObjectContext:managedObjectContext!) as! EventList
for (key, value) in dico {
newItem.setValue(value, forKey: key)
}
}

可以缩短为

func insertObject (entityName:String, dico: [String : NSObject]) {
let newItem = NSEntityDescription.insertNewObjectForEntityForName(entityName, inManagedObjectContext:managedObjectContext!) as! EventList
newItem.setValuesForKeysWithDictionary(dico)
}

这种通用方法的问题在于它会在如果字典包含不是属性的键,则运行时实体的类型,或者数据类型不匹配。

关于ios - swift 中循环 ManagedObject 插入的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30587737/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com