Ho difficoltà con Core Data in Xcode 8 beta 1. Le vecchie app si compilano e funzionano bene, ma tutte le nuove app si compilano e funzionano bene fino al tentativo di inserire un nuovo NSManagedObject.Il Core Data Model non sembra essere riflesso nell'app
Inizialmente pensavo che avesse qualcosa a che fare con l'eliminazione errata di un vecchio xcdatamodel e il rifacimento di un altro, ma dopo aver creato un'app nuovissima e aver creato una semplice Entità "A", non sono in grado di creare un oggetto di classe A in runtime.
Ho provato con let a = A(context: myMOC)
che restituisce l'errore:
An NSManagedObject of class 'MyApp.A' must have a valid NSEntityDescription.
Cercando il vecchio let a = NSEntityDescription.insertNewObject(forEntityName: "A", into: context) as! A
restituisce l'errore:
Could not cast value of type 'NSManagedObject_A_' (0x7fd114626f80) to 'MyApp.A' (0x10d2fdf28).
Ho controllato il mio xcdatamodel una dozzina di volte per assicurarsi che ho scritto tutto correttamente, e ho creato un nuovo progetto da testare per assicurarmi di non aver commesso errori nella configurazione del CD. Pensieri?
AGGIORNAMENTO: Il contenuto della confezione xcdatamodel sono questo:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="11147.23" systemVersion="16A201w" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">
<entity name="Coordinate" syncable="YES" codeGenerationType="class">
<attribute name="latitude" optional="YES" attributeType="Double" defaultValueString="0.0" usesScalarValueType="YES" syncable="YES"/>
<attribute name="longitude" optional="YES" attributeType="Double" defaultValueString="0.0" usesScalarValueType="YES" syncable="YES"/>
<relationship name="route" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="Route" inverseName="coordinates" inverseEntity="Route" syncable="YES"/>
</entity>
<entity name="Route" syncable="YES" codeGenerationType="class">
<attribute name="uuid" optional="YES" attributeType="String" syncable="YES"/>
<relationship name="coordinates" optional="YES" toMany="YES" deletionRule="Nullify" ordered="YES" destinationEntity="Coordinate" inverseName="route" inverseEntity="Coordinate" syncable="YES"/>
</entity>
<elements>
<element name="Route" positionX="-45" positionY="0" width="128" height="75"/>
<element name="Coordinate" positionX="-18" positionY="27" width="128" height="90"/>
</elements>
</model>
UPDATE 2: stampa entità del managedObjectModel, dimostra che il modello corretto viene caricata. Ancora non riesco a ottenere un NSManagedObject per l'inizializzazione in qualsiasi nuovo progetto.
Il secondo errore che hai elencato è quello che mi aspetterei se il nome/modulo della classe personalizzata non venisse compilato correttamente nel modello di dati. Hai verificato che sono corretti? –
Ho verificato più volte. Ho testato tutte le entità che ho e ottengo gli stessi errori. – jjatie
Si prega di aggiungere il contenuto dell'XML del modello dati al Q. Lo si trova all'interno del pacchetto xcdatamodel. In alternativa aggiungi uno screenshot dell'editor del modello. –