core-data - Swift Core Data,设置关系时动态转换失败

标签 core-data swift relationship

我被困了几天,需要一些帮助。 我的数据模型设置有两个实体(一对多关系)。圆形 <---->> 孔。在一个 View Controller 中,我设置了 Round 并分配了它的属性(我们称这个对象为 roundObject)。我获取并获取此 NSManagedObject roundObject 并将其传递给不同的 View Controller 。在这个新的 VC 中,我现在想分配 Hole 的属性(与 Round 有关系)。但是,当我尝试分配 Hole(名为 holeToRound)的关系属性时,它不会接受我传入的 NSManagedObject roundObject。它告诉我“NSManagedObject 不可转换为 Round”。所以我尝试将 MyRound 转换为 Round,然后应用程序崩溃并告诉我“Swift 动态转换失败”。

任何帮助都会很棒。我只是缺少设置关系属性的基本步骤吗?本质上,我希望能够在一个 VC 中设置一个实体属性,并通过另一个 VC 中的一对多关系属性设置另一个实体。例如,在这个特定的应用程序中,我有一个高尔夫球场,我在其中定义了球场名称,然后我有许多洞对象 (1-18),我想在其中定义和设置每个洞的标准杆和码数。

这是两个模型类

class Hole: NSManagedObject {

@NSManaged var par: String
@NSManaged var yards: String
@NSManaged var holeToRound: Round
@NSManaged var holeNum: String

}

class Round: NSManagedObject {

@NSManaged var course: String
@NSManaged var playerOne: String
@NSManaged var playerTwo: String
@NSManaged var roundToHole: NSSet

}

这是我尝试分配关系属性的 prepareFroSegue

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
    let appDel:AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
    let context:NSManagedObjectContext = appDel.managedObjectContext

    if segue.identifier == "hole1Segue" {



        let entity = NSEntityDescription.entityForName("Hole", inManagedObjectContext: context)

        let newHole = Hole(entity: entity, insertIntoManagedObjectContext: context)



        newHole.holeToRound = roundObject as Round

        context.save(nil)
}

最佳答案

我发现它不允许我分配关系属性的原因是因为我没有在我的 NSManagedObject 模型文件中包含 @objc() 语句。一旦我这样做了,它就工作得很好。

import Foundation
import CoreData

@objc(Round)
class Round: NSManagedObject {

@NSManaged var course: String
@NSManaged var playerOne: String
@NSManaged var playerTwo: String
@NSManaged var roundToHole: NSSet

}

关于core-data - Swift Core Data,设置关系时动态转换失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25255979/

相关文章:

ios - 迁移核心数据和映射模型

ios - 是什么导致 UIPasteboard 中的项目被转换为 NSConcreteMutableData?

php - 如何将其转换为一个很好的 Eloquent 查询

java - Java 代码中的聚合和组合

ios - 该应用程序在有效负载 addMatches : (CoreDataGeneratedAccessors) 中引用了非公共(public)选择器

iphone - 检测 NSManagedObject 特定属性的更改

ios - Google 登录集成问题

ruby-on-rails - 在 Rails 迁移中更改对象

swift - 将图像保存为有序索引的二进制数据

ios - 将数据保存在钥匙串(keychain)中,只能通过 Swift 3 中的 Touch ID 访问