2016-03-30 14 views
0

私はこれを間違った方法で行っているかもしれませんが、エンティティサブクラスのメソッドを呼び出そうとしています。エンティティクラスの呼び出しメソッド - 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

答えて

0

[OK]をエラーが発生しますので、私はいくつかの質問を持っています。 1)プロジェクトでCoreDataを使用していますか?これは、私があなたのデータモデルにPlayerというエンティティを作成したと仮定したmanagedObjectContextの使用のために私が推測しているものです。

2)命名規則とできるだけ一致していると、コードを読みやすくなります。あなたの "managedContext" - > "managedObjectContext"という名前を付けることをお勧めします。それは重要ではないように見えるかもしれませんが、それに入る良い習慣です。

3)あなたの関数の外でmanagedObjectContextを宣言することをお勧めします。現在、managedObjectContextに保存されているものにアクセスできるコード内の唯一の場所は、この関数内です。関数の外でクラスの先頭に宣言すると、クラス全体でアクセスできます。

4)実際の問題を解決する方法を伝える方法はわかりませんが、コードをまとめてmanagedObjectContextにオブジェクトの新しいインスタンスを挿入する方法を見てみましょう。 CoreDataでは、私は今、あなたはあなたのmanagedObjectContextに入り、出てそのデータを引き出しフェッチ方法を書くのは自由ですなどflickTitle、flickReleaseDate、flickDirector、などの属性が含まれてフリックと呼ばれるエンティティ...

var currentFlick: Flick? 

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

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

を持っていますあなたがそれを好きにして遊ぶことができます。私はそれがたくさんあることを知っていますが、私はそれの少なくともいくつかがあなたがこれで一緒になりたいところに行くのを助けることを願っています!

+1

美しく、これで修正できました。今すぐ完璧に走ります、ありがとうございます! – excessive34

関連する問題