繁体   English   中英

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

[英]Calling method of Entity Class - CoreData: Swift 2.0

我可能会以错误的方式进行操作,我正在尝试调用实体子类的方法。

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)您在项目中使用CoreData吗? 这就是我猜到的,由于您使用了ManagedObjectContext,我假设您在数据模型中创建了一个名为Player的实体?

2)如果您和命名约定尽可能一致,那么您和其他人将更容易阅读代码。 我建议命名您的“ managedContext”->“ managedObjectContext”。 它看起来似乎无关紧要,但却是一种很好的实践。

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)

现在,您可以自由地编写一个获取方法,该方法将进入您的ManagedObjectContext并提取数据供您随意使用。 我知道很多东西,但我希望至少有一部分可以帮助您到达想要的位置!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM