gpt4 book ai didi

ios - swift 2 : Save coredata with one-to-many conditions

转载 作者:搜寻专家 更新时间:2023-11-01 06:21:25 26 4
gpt4 key购买 nike

我想用 swift 2 绑定(bind)我的 2 个模型:

one-to-many swift2

“正文部分”表:

enter image description here

“肌肉”表:

enter image description here

我只想保存一个“BodyPart”及其“肌肉”:

  if let managedObjectContext = self.managedObjectContext {

do{

// create a bodyPart
let bodyPart = NSEntityDescription.insertNewObjectForEntityForName("BodyPart",inManagedObjectContext: managedObjectContext) as! BodyPart

// create a Muscle
let muscle = NSEntityDescription.insertNewObjectForEntityForName("Muscle",inManagedObjectContext: managedObjectContext) as! Muscle


//muscles attributes
muscle.name = "test"
muscle.image = "myimage.png"

// mobdypart attributes
bodyPart.name="mybody-part test"
bodyPart.muscles = [muscle]

//save
try managedObjectContext.save()


// get all muscles
let fetchRequest = NSFetchRequest(entityName: "BodyPart")

/* Get result array from ManagedObjectContext */
let fetchResults = try managedObjectContext.executeFetchRequest(fetchRequest)

// list body parts
if let results: Array = fetchResults {
for obj:AnyObject in results {

let name:String? = obj.valueForKey("name") as? String
print("name for the BodyPart: \(name) ")

// list muscles => always empty !!
if let muscles: Array<Muscle> = obj.valueForKey("muscles") as? Array<Muscle> {
for ob:Muscle in muscles {
print("### name for the muscles: \(ob.name)")
}
}

}

} else {
print("Could not fetch")
}


} catch let error as NSError {
print(error)
}
}

BodyPart 保存在 CodeData 中,但是 Muscles 列表是空的。谢谢

最佳答案

Core Data默认的集合类型是NSSet而不是NSArray

您可以从返回数组的集合中获取allObjects

if let muscles: Array<Muscle> = (obj.valueForKey("muscles") as! NSSet).allObjects as? Array<Muscle> { ...

但由于您从 Core Data 模型中知道 muscles 存在,我建议将该属性声明为非可选属性并省略可选绑定(bind)。

let muscles = obj.valueForKey("muscles") as! NSSet

关于ios - swift 2 : Save coredata with one-to-many conditions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33408963/

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