0

次の属性を使用して設定された Core Data エンティティがあります。

resellerNo:Int
resellerName:String

次のように NSManagedObject をセットアップしました。

class Reseller: NSManagedObject
{
    @NSManaged var resellerNo: Int
    @NSManaged var resellerName: String
}

このメソッドを実行しようとすると:

func createNewReseller(resellerName: String)
{
    let context = app.managedObjectContext

    let resellerEntity = NSEntityDescription.entityForName("Resellers", inManagedObjectContext: context)
    let newReseller = Reseller(entity: resellerEntity!, insertIntoManagedObjectContext: context)

    newReseller.resellerNo = 12
    newReseller.resellerName = resellerName
    saveDatabase()
    Swift.print ("Reseller \(resellerName) created")
}

次に、resellerNo を割り当てようとするとクラッシュし、エラー メッセージが表示されます。

属性の許容できない値のタイプ: property = "resellerNo"; 必要なタイプ = NSNumber; 指定されたタイプ = __NSTaggedDate; 値 = 2001-01-01 00:00:00 +0000。

奇妙なことに、コンソールを使用してnewReseller.resellerNo直前に印刷すると、正常に動作します。

まったく同じ方法で他のエンティティにアクセスする他のコードは正常に機能します。

何か案は?

4

2 に答える 2

0

OK、最終的にはかなり単純であることがわかりました。エンティティにクラスを追加していなかったことがわかりました。

この問題がある場合:

  1. xcdatamodel をクリックします。
  2. エンティティを選択します。
  3. ユーティリティ バーにデータ モデル インスペクターを表示します。
  4. 定義されたクラス名を入力します (私の場合は Reseller)

また、クラス定義を次のように変更する必要がありました。

@objc(Reseller)
class Reseller: NSManagedObject
{
    @NSManaged var resellerNo: Int
    @NSManaged var resellerName: String
}

これが誰かに役立つことを願っています。

于 2016-04-03T15:54:21.337 に答える