实体类的调用方法 - CoreData:Swift 2.0

时间:2016-03-30 00:29:03

标签: ios swift core-data

我可能会以错误的方式解决这个问题,我试图调用实体子类的方法。

func addPlayer(_name: String, _team: String, _position: String, _stats: NSDictionary){

    let managedContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext

    let entity = NSEntityDescription.entityForName("Player", inManagedObjectContext: managedContext)

    let player = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext)

    player.setValue(_name, forKey: "name")
    player.setValue(_position, forKey: "position")
    player.setValue(_team, forKey: "teamAbbr")

    player.setValue(player.calculateTradeValue() as! Player, forKey: "tradeValue")

最后一行给了我一个错误 Value of type NSManagedObject has no member calculateTradeValue

1 个答案:

答案 0 :(得分:0)

好的,我有几个问题。 1)您是否在项目中使用CoreData?由于您使用了managedObjectContext,我猜测的是,我假设您已经在数据模型中创建了一个名为Player的实体?

2)如果您与命名约定尽可能一致,那么您和其他人可以更轻松地阅读您的代码。我建议命名你的" managedContext" - > " managedObjectContext&#34 ;.它似乎微不足道,但它是一个很好的做法。

3)我建议在你的函数之外声明你的managedObjectContext;现在,代码中唯一可以访问managedObjectContext中保存的内容的地方就在这个函数中。如果您在课程顶部声明它,在任何功能之外,您可以在整个课程中访问它。

4)我不确定如何告诉您如何解决实际问题,但请看看我如何将我的代码放在一起以将对象的新实例插入到managedObjectContext中。在CoreData中,我有一个名为Flick的实体,它包含flickTitle,flickReleaseDate,flickDirector等属性......

 var currentFlick: Flick?

 let entityDescription: NSEntityDescription! = NSEntityDescription.entityForName("Flick", inManagedObjectContext: appDelegate.managedObjectContext)

 currentFlick = Flick(entity: entityDescription, insertIntoManagedObjectContext: appDelegate.managedObjectContext)

现在,您可以自由编写一个fetch方法,该方法会进入您的managedObjectContext并将该数据拉出来供您随时使用,但是您不喜欢。我知道这很多,但我希望至少有一些可以帮助你达到你想要的目标!