Swiftで実行時に属性データ型のタイプをチェックしたいと思います。挿入するときと同じように、エンティティ内の特定の属性が日付型または文字列型の値を受け入れるかどうかを確認したい。これはSwiftでどのように達成できるのですか?実行時にコアデータの属性タイプをチェックする方法は?
答えて
それはtype(of:)
.E.gです。、
let test: Int = 0
if type(of: test) == Int.self {
print("found")
}
これは一般的なSwiftの場合には当てはまりますが、Core Dataの場合、Core Dataのリフレクション方法を使用する方が良いでしょう。 –
あなたはいつもモデルで定義されたプロパティの正しい種類を見つけるためにタイプのNSAttributeDescriptionあるエンティティの属性記述を使用することができます。
NSManagedObject、Personのサブクラスがあるとします。その後、あなたは、一般的には
@objc(Person)
class Person: NSManagedObject {
@NSManaged
var name: String
@NSManaged
var age: NSNumber
@NSManaged
var dateOfBirth: Date
}
let person = NSEntityDescription.insertNewObject(forEntityName: "Person", into: context) as! Person
if let attribute = person.entity.attributesByName["name"],
attribute.attributeType == .stringAttributeType {
// use your code here for custom logic
print("name is string")
}
if let attribute = person.entity.attributesByName["age"],
attribute.attributeType == .dateAttributeType {
// use your code here for custom logic
print("age is date")
}
を挿入する前にタイプを確認するには、次のコードからの例を使用することができ、あなたはあなたのコードを書く前に、あなたのモデルが何であるかを知っている必要があります。 読み込み専用モデルのイントロスペクションはやや愚かなようです。私はあなたがこれをやりたいと思っている理由を考えることはできませんが、あなたが共有していないという良い理由があると確信しています。
NSEntityDescription
のmanagedObject entity
クラスメソッド(サブクラス上)を見ることができます。または、モデルオブジェクト(context.persistentStoreCoordinator.managedObjectModel.entites
)からすべてのエンティティの説明を直接取得することも、エンティティの名前を知っていればcontext.persistentStoreCoordinator. managedObjectModel.entitiesByName["EntityName"]
を使用することもできます。エンティティの説明は、すべてのエンティティのプロパティについて説明します。それぞれの属性を調べて、その属性のタイプを示すNSAttributeDescription
を得ることができます。
- 1. コアデータ属性タイプのリスト?
- 2. コアデータ、同時実行性、GCD
- 3. コアデータ同時実行性デバッグ
- 4. "実行"属性をファイルに設定し、WindowsのSVNでチェックする方法は?
- 5. Dartで実行時の型チェックを実行する方法は?
- 6. NSMutableAttributedStringの属性をチェックする方法
- 7. コードの並行性チェック属性を最初に使用する方法は?
- 8. コアデータの移行:新しい属性を設定する方法は?
- 9. 実行時にサポートライブラリ/ AppCompatライブラリのバージョンをチェックする方法は?
- 10. TypeScriptの実行時にオブジェクトタイプをチェックする方法は?
- 11. コアデータ属性の一意性
- 12. 実行時にファイルのコンテンツ/タイプを取得する方法
- 13. Ploneワークフロー:オブジェクトの複数の属性をチェックする方法は?
- 14. 戻るランダム属性(コアデータ)
- 15. コアデータ - NSManagedObjectの属性を反復する
- 16. LinqToXML式のヌル属性をチェックする方法は?
- 17. if else文のブール値属性をチェックする方法は?
- 18. 実行ファイルの実行時の整合性チェック
- 19. 実行時に変数タイプを変更する方法
- 20. 属性がブール値属性であるかどうかをチェックする方法?
- 21. コアデータの編集属性
- 22. タイピングモジュールを使用する際にタイプの互換性をチェックする方法は?
- 23. 実行時にhref属性を設定する
- 24. 実行時のアプリケーション出力タイプを変更する方法
- 25. 実行時にクラスインスタンスに属性を追加するのは "pythonic"ですか?
- 26. テンソルフローモデルの実行時に各テンソルの次元をチェックする方法は?
- 27. 実行時に属性コンストラクタはいつ実行されますか?
- 28. コアデータ:アクセスしたエンティティ属性
- 29. レールのブール値属性に基づいてクエリを実行する方法は?
- 30. Gaelyk:コレクション属性でデータストアクエリを実行する方法
これを確認してください。 https://stackoverflow.com/questions/24006165/how-do-i-print-the-type-or-class-of-a-variable-in-swift –
例がありますか? – Siriss
実際には、モデルは読み取り専用なので、実行時に属性とその型を知っているはずです。 – vadian