Ich möchte den Typ des Attributtyps zur Laufzeit in Swift überprüfen. Wie beim Einfügen möchte ich überprüfen, ob das bestimmte Attribut in einer Entität den Wert des Datumstyps oder Zeichenkettentyps akzeptiert. Wie das in Swift erreicht werden kann.Wie zur Kerndatenattributtyp zur Laufzeit überprüfen?
Antwort
Es ist type(of:)
.E.g.,
let test: Int = 0
if type(of: test) == Int.self {
print("found")
}
Das gilt für Swift im Allgemeinen, aber mit Core Data ist es besser, die Reflektionsmethoden von Core Data zu verwenden. –
können Sie immer die Attributbeschreibung verwenden Einheit, die vom Typ ist NSAttributeDescription, um die richtige Art der Immobilie herauszufinden, die in Modell definiert ist.
Wenn Sie sagen, Sie haben eine Unterklasse von NSManagedObject, Person. Dann könnten Sie beispielsweise aus folgenden Code verwenden, um die Art zu überprüfen, bevor das Einfügen,
@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")
}
Im Allgemeinen sollten Sie wissen, was Ihr Modell ist, bevor Sie den Code schreiben. So introvertiert auf einem Readonly-Modell scheint ein wenig albern. Ich kann mir keinen Grund vorstellen, warum du das jemals tun würdest, aber ich bin sicher, du hast einen guten Grund, dass du es nicht teilst.
Sie können eine verwalteteObject entity
Klassenmethode (in Ihrer Unterklasse) ansehen, die eine NSEntityDescription
ist. Oder Sie können alle Entitätsbeschreibungen direkt von Ihrem Modellobjekt abrufen (context.persistentStoreCoordinator.managedObjectModel.entites
) oder wenn Sie den Namen der Entität kennen, können Sie context.persistentStoreCoordinator. managedObjectModel.entitiesByName["EntityName"]
verwenden. Die Entitätsbeschreibung informiert Sie über die Eigenschaften der Entitäten. Sie können jedes der Attribute durchsehen und erhalten eine NSAttributeDescription
, die Ihnen den Typ für dieses Attribut mitteilt.
- 1. C# überprüfen Silverlight Objektgröße zur Laufzeit
- 2. Wie überprüfen Sie die Gem-Version in Ruby zur Laufzeit?
- 3. Wie überprüfen Sie die Windows-Version in Win32 zur Laufzeit?
- 4. wie Schatten zur Laufzeit deaktivieren?
- 5. Konvertieren von Lambda zur Delegierung zur Laufzeit
- 6. Zeile zur Laufzeit zur Tabelle hinzufügen
- 7. Einstellung "Modal" zur Laufzeit
- 8. create Tframes zur Laufzeit:
- 9. ändern Etikettenposition zur Laufzeit
- 10. QRadioButtons zur Laufzeit hinzufügen
- 11. Anruf zur Delegierung zur Laufzeit weiterleiten
- 12. Ninject zur Laufzeit verbindlich
- 13. Funktioniert @NotNull zur Laufzeit
- 14. Apportieren Kontextkonfiguration zur Laufzeit
- 15. entfernen FLAG_TRANSLUCENT_STATUS zur Laufzeit
- 16. Änderung TopMost zur Laufzeit
- 17. Setze Klasseneigenschaft zur Laufzeit
- 18. Speichern xamlx zur Laufzeit
- 19. Usercontrol zur Laufzeit
- 20. Klassenimplementierung zur Laufzeit (Java)
- 21. JPA-Kaskadenoptionen zur Laufzeit
- 22. Yii Validierung zur Laufzeit?
- 23. Update label.text zur Laufzeit
- 24. Animation zur Laufzeit hinzufügen
- 25. Bean zur Laufzeit ersetzen
- 26. Einstellung UICollectionViewCellSize zur Laufzeit
- 27. Schriftart ändern zur Laufzeit
- 28. MasterPageFile zur Laufzeit wechseln
- 29. Anwendung zur Laufzeit übersetzen
- 30. Button-Rahmenwechsel zur Laufzeit
Überprüfen Sie dies. https://stackoverflow.com/questions/24006165/how-do-i-print-the-type-or-class-of-a-variable-in-swift. –
Haben Sie ein Beispiel? – Siriss
Eigentlich sollten Sie die Attribute und ihre Typen zur Laufzeit wissen, da das Modell schreibgeschützt ist. – vadian