私は、文字列値から属性を設定することに大きく依存するコアデータを使用してアプリケーションを作成しています。しかし、コアデータはラッパーメソッドを作成するときにNSNumberを使用してすべての数値フィールドを表現するため、問題が発生しています。したがって、キー/値コーディングsetValue:forKeyを使用してStringを渡すと、タイプエラーが発生します。iOSのキー値型強制
たとえば、私はオブジェクト型 "Building"を持っています。データモデルでは、私はその後、32
を整数に設定し、 "fbFloors" という属性を持って、私のコードでは、私は次の操作を行います
ビル* B = [NSEntityDescription insertNewObjectForEntityForName: "ビル" inManagedObjectContext @: ctx]; [b setValue:@ "2" forKey:@ "fbFloors"];
これは、次の例外が発生します「属性の値の許容できないタイプ:アプリを終了
キャッチされない例外により「NSInvalidArgumentException」、理由のプロパティ= 『fbFloorsを』。所望のタイプ= NSNumber;指定された型= __NSCFConstantString;値= 2。
文字列の値を数値に強制するのが欲しいですが、そうしたくありません。私はcoerceValueForFbFloorsを実装しようとしました:しかし、それはiOSではなくMac OS Xでのみ利用可能です。
アイデア?
私がこれを避けることを望んでいたのは、それを直接コーディングするのを避けることができるためでした。さまざまなタイプのフィールドがありますが、それらはすべてテキストフィードから入ってくるので、私はKVCが手動で各フィールドに何が起こるかをコードなしでタイプを強制することができることを期待していました。私は "fbFloorsString"のようなフィールドを追加することを考えていましたが、それは私の変換を行いますが、私はもっと自動化を望んでいました。 – johnnyb