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

Ios 实体类的调用方法-CoreData:Swift 2.0,ios,swift,core-data,Ios,Swift,Core Data,我可能走错了方向,我试图调用实体子类的方法 func addPlayer(_name: String, _team: String, _position: String, _stats: NSDictionary){ let managedContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext let entity = NSEntityDescrip

我可能走错了方向,我试图调用实体子类的方法

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")
最后一行给了我一个错误
NSManagedObject类型的
值没有成员calculateTradeValue

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

2) 如果您尽可能遵守您的命名约定,您和其他人将更容易阅读您的代码。我建议将您的“managedContext”->“managedObjectContext”命名为“managedContext”。这似乎无关紧要,但这是一个很好的实践

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,并将数据提取出来,供您随意使用。我知道这是很多,但我希望至少有一部分能帮助你达到你想要的目的

很漂亮,我能用这个把它修好。现在运行完美无瑕,谢谢!!