Es kann kein NSPersistentStoreCoordinator mit einem Nullmodell erstellt werden

96

Ich hatte meinen ersten Riss bei Core Data und erhalte die folgende Fehlermeldung, wenn ich meinen Code auf meinem Gerät ausführe, aber er funktioniert auf dem Simulator einwandfrei.

* Beenden der App aufgrund der nicht erfassten Ausnahme 'NSInvalidArgumentException', Grund: 'NSPersistentStoreCoordinator kann nicht mit einem Nullmodell erstellt werden'

Einige meiner Methoden, die das Problem verursachen könnten:

    - (NSManagedObjectContext *)managedObjectContext
{
    if (__managedObjectContext != nil)
    {
        return __managedObjectContext;
    }

    NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
    if (coordinator != nil)
    {
        __managedObjectContext = [[NSManagedObjectContext alloc] init];
        [__managedObjectContext setPersistentStoreCoordinator:coordinator];
    }
    return __managedObjectContext;
}

/**
 Returns the managed object model for the application.
 If the model doesn't already exist, it is created from the application's model.
 */
- (NSManagedObjectModel *)managedObjectModel
{
    if (__managedObjectModel != nil)
    {
        return __managedObjectModel;
    }
    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"RugbyOnTv" withExtension:@"momd"];
    __managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];    
    return __managedObjectModel;
}

/**
 Returns the persistent store coordinator for the application.
 If the coordinator doesn't already exist, it is created and the application's store added to it.
 */
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
    if (__persistentStoreCoordinator != nil)
    {
        return __persistentStoreCoordinator;
    }

    NSString *storePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"RugbyOnTV.sqlite"];

    NSURL *storeUrl = [NSURL fileURLWithPath:storePath];

    NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];    
    __persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];

    NSError *error = nil;
    __persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];


    if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {

        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
    }    

    return __persistentStoreCoordinator;
}


    - (NSString *)applicationDocumentsDirectory {

        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
        return basePath;
    }

BEARBEITEN

Ich habe die ManagedObjectContext-Methode (unten) aus Apples CoreDataBooks kopiert und eingefügt und sie funktioniert jetzt. Ich bin mir nicht sicher, warum

- (NSManagedObjectModel *)managedObjectModel {
    if (managedObjectModel != nil) {
        return managedObjectModel;
    }
    managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];    
    return managedObjectModel;
}
Dominic Williams
quelle
Hey, es könnte so einfach sein, das Wort "Model" an den ersten URLForResource-Parameter anzuhängen ... ja, ich hatte das gleiche Problem. Dann überprüfte ich den tatsächlichen .app-Inhalt in der Befehlszeile und stellte fest, dass die .momd tatsächlich erstellt wurde. Versuchen Sie Folgendes: [[NSBundle mainBundle] URLForResource: @ "RugbyOnTvModel" withExtension: @ "momd"];
PostCodeism
NSString *basePath = [paths firstObject];
William Entriken

Antworten:

157

Ich hatte genau die gleiche Fehlermeldung wie der ursprüngliche Beitrag. Ich habe stundenlang damit gerungen. Es war diese Zeile in meinem AppDelegate.m.

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"[same with name of xcdatamodeld]" withExtension:@"momd"];

Für alle da draußen, die diese Fehlermeldung suchen und diesen Thread finden ... versuchen Sie dies zuerst.

Sie müssen sicherstellen, dass dort, wo es steht [dasselbe mit dem Namen xcdatamodeld] .... dass es ist !!! Aus irgendeinem Grund hatte ich meinen Projektnamen und nicht den Namen des Datenmodells.

Änderte es und es funktionierte sofort .....

Vielen Dank an Rock & Muller für ihren Beitrag ....... du hast mir Tage gerettet !!

Gaz.

Gareth Lloyd
quelle
2
Dies ist der Kommentar, der es für mich zum Laufen gebracht hat. Der magische Name, nach dem meine App suchte, war der blahvon blah.xcdatamodeld. Vielen Dank, dass Sie Internet und Stackoverflow.
Acedanger
Ich habe "Model.xcdatamodeld", als Argument in "Model" geändert. Aber Xcode weigert sich, es zu laden, aber diese Datei ist tatsächlich da! Ich weiß nicht, was passiert.
Darmen Amanbayev
Beeindruckend. Dank schlug mir eine Weile den Kopf.
Sani Elfishawy
was ist mit dem storeURL?
MoralCode
54

Überprüfen Sie zuerst:

NSLog(@"%@", [self managedObjectModel]);

Wenn Sie einen Nullwert erhalten, liegt das Problem möglicherweise hier

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"RugbyOnTv" withExtension:@"momd"];

Versuchen Sie also, @ "momd" durch @ "mom" zu ändern.

D33pN16h7
quelle
1
Ihr Recht. Es ist null und daher verursacht diese Zeile den Fehler: `__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self manageObjectModel]];` Der Wechsel zu Mom scheint jedoch nichts zu beheben
Dominic Williams
3
Am wahrscheinlichsten modelURList auch nil. Die häufigste Ursache ist ein Tippfehler RugbyOnTv. Beachten Sie, dass hier zwischen Groß- und Kleinschreibung unterschieden wird.
Rob Napier
1
Das Ändern von "momd" in "momd" hat auch für mich funktioniert. Vielen Dank. Aber wieso? Warum generiert XCode Code, der nicht funktioniert? Warum habe ich in SO obskure Korrekturen wie diese gefunden, damit die grundlegenden Vorlagen funktionieren?
Rhabarber
10
Nachdem ich kürzlich eine zweite Version meines Modells vorgestellt hatte, musste ich sie wieder auf momd ändern. Angesichts der Tatsache, dass der Modellversionscontainer eine Erweiterung von xdatamodeld hat, können wir daraus schließen, was hier vor sich geht. "momd" ist für Modelle mit mehr als einer Version, während "mom" für Modelle ohne Versionierung ist.
Gerald
2
Ich habe Code wörtlich in ein neues Projekt [iOS7] kopiert und es war ursprünglich Momd, aber der Wechsel zu Mom hat es behoben. Ich habe keine Ahnung, wie ich ohne diese eine Lösung gefunden hätte, also danke :)
Ian Clay
20

Ich habe ein seltsames Problem mit Xcode 4.3.2 und iOS 5 festgestellt.

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"NAME_OF_THE_MODEL" withExtension:@"momd"];

gibt aber eine gültige URL zurück

__managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];

Gibt ein null NSManagedObjectModel zurück. Nach Überprüfung der Dokumentation scheint NSManagedObjectModel jedoch eine Datei zu benötigen, in der NAME_OF_THE_MODEL.momd ein Verzeichnis ist, das eine NAME_OF_THE_MODEL.mom-Datei enthält. Ändern der URL in

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"NAME_OF_THE_MODEL" withExtension:@"mom" subdirectory:@"NAME_OF_THE_MODEL.momd"];

dann funktioniert. Scheint seltsam, dass Xcode Code generiert, der nicht mit sich selbst funktioniert ...

xster
quelle
1
Dieses spezielle Problem wird dadurch verursacht, dass eine zusätzliche Modellversion erstellt und dann versucht wird, sie manuell zu löschen, während Xcode geöffnet ist. Dies führt zu einer Art Korruption. Sie sollten keine bestimmten Modellversionen im Verzeichnis momd übergeben.
Mike Weller
cool @MikeWeller, gut zu wissen. Wissen Sie, wo sich die Metadaten befinden, die auf die Mom-Datei im Momd-Verzeichnis verweisen?
Xster
Ich habe nicht versucht, es zu löschen, aber ich hatte dieses Problem und die veröffentlichte Lösung hat für mich funktioniert. Insbesondere habe ich nur eine Überprüfung hinzugefügt, um festzustellen, ob es immer noch Null ist, und ob ich den obigen Code hinzugefügt habe: if (_managedObjectContext == nil) {NSURL * modelURL = [[NSBundle mainBundle] URLForResource: @ "Model" withExtension: @ "mom" Unterverzeichnis: @ "Model.momd"]; _managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL: modelURL]; }
David van Dugteren
19

Ich hatte dieses Problem und das Ändern von "Mütter" zu "Mutter" hat nichts getan. Um das Problem zu beheben, musste ich mit der rechten Maustaste auf die Datei xcdatamodelId klicken> Paketinhalt anzeigen und dann die versteckte .xcurrentversion-Datei löschen.

PS: Dieses Problem trat erst auf, nachdem ich den Namen der Datenmodelldatei geändert hatte.

JDx
quelle
2
Für alle, die auf das folgende Problem stoßen: manageObjectModel ist nach dem Umbenennen der xcdatamodeld-Datei gleich Null: Diese Antwort ist die beste! Danke JDx, deine Antwort hat mir sehr geholfen!
Dumoko
Anstatt es zu löschen, können Sie es eventuell bearbeiten, um den gespeicherten Dateinamen auf die neueste Version von youl xcdatamodel
furins zu ändern.
13

Eine weitere Ursache für diesen Fehler ist, dass Xcode das Datenmodell manchmal nicht in den Build einbezieht.

Überprüfen Sie die Erstellungsphasen Ihres Ziels und stellen Sie sicher, dass die Datei * .xcdatamodeld im Abschnitt Quellen kompilieren enthalten ist.

Dave Wood
quelle
Das hat es für mich behoben.
Ben Thomas
das hat bei mir funktioniert. Es ist frustrierend und schwer zu debuggen, wenn es auf Simulator und nicht auf einem echten Gerät funktioniert!
Bishal Ghimire
9

Was wahrscheinlich passiert ist, ist, dass Ihre xcdatamodeld-Datei aus Apples Quellcode in eine xcdatamodel-Datei (ohne das d) umgewandelt wurde und daher nicht als gleich angesehen wird.

Der schnellste Weg, dies zu beheben, besteht darin, die xcdatamodel-Datei in Ihrem Projektnavigator und in der Menüleiste auszuwählen

Editor->Add Model Version...

und fügen Sie eine neue Version Ihres Modells hinzu. Nehmen Sie alle Änderungen an der neuen Version vor.

Dies funktioniert in Xcode 5

Louis Cremen
quelle
Leider gibt es diese Option in Xcode 5 nicht. Siehe hier
Abbood
Ich habe vergessen zu erwähnen, dass Sie die xcdatamodel-Datei auswählen müssen. Die Antwort wurde bearbeitet, um den Kommentar wiederzugeben.
Louis Cremen
8

Ich löse es, indem ich die DB-Datei zum hinzufüge Copy Bundle Resources .

Gehen Sie zum Stammverzeichnis Ihres Projekts >> wählen Sie Ihr Ziel aus >> Phasen erstellen >> Bundle-Ressourcen kopieren. Stellen Sie sicher, dass Ihre xcdatamodeld-Datei hier hinzugefügt wurde.

Geben Sie hier die Bildbeschreibung ein

Keine der veröffentlichten Lösungen hat bei mir funktioniert. Hoffentlich hilft dieser Beitrag jemandem da draußen. Meine App stürzt übrigens nur in Release-Builds ab. Lektion gelernt. Testen Sie immer Release Builds!

Übrigens fand ich diesen SO-Beitrag am hilfreichsten unter https://stackoverflow.com/a/6708837/951349 .

smileBot
quelle
6

Ich habe das gleiche Problem mit @Dominic Williams

Versuchen Sie, den Namen der Momd-Datei unten zu ändern (dies finden Sie managedObjectModelstandardmäßig in der Methode). Dies entspricht der von [file name].xcdatamodeldIhnen erstellten Datei:

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"[same with name of xcdatamodeld]" withExtension:@"momd"];
Felsen
quelle
5

Ich hatte das gleiche Problem. Die Lösung war eine Mischung aus 2 Antworten:

1) Ich musste dem URLForResource-Aufruf den Parameter "Unterverzeichnis" hinzufügen

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"DATAMODEL_NAME" withExtension:@"mom" subdirectory:@"DATAMODEL_NAME.momd"];

2) Aus einem mir unbekannten Grund wurde das Datenmodell beim Kompilieren des Projekts nicht berücksichtigt. Ich musste es manuell in die "Phasen erstellen / Ressourcen kompilieren" einfügen.

Mit nur einer der oben genannten Lösungen funktionierte meine Anwendung nicht.

Salvador Ponticelli
quelle
4

Die Lösung für das Problem, von dem Sie sprechen, ist einfach. Ändern Sie die Dateierweiterung in der Modell-URL in "mom" anstelle von "momd". Getan.

pfuri
quelle
4

Ich habe hier alle Lösungen ausprobiert, und keine davon hat funktioniert. Mein Problem trat auf, nachdem ich das Projekt umbenannt hatte. Anscheinend sucht Xcode während der Kompilierung weiterhin an der falschen Stelle nach der alten Momd-Datei.

Wenn Sie alle oben genannten Lösungen ohne Erfolg ausprobiert haben, überprüfen Sie den vollständigen Pfad Ihrer .xcdatamodeldDatei. Das hat bei mir funktioniert.

XCool
quelle
4

Ich hatte das gleiche Problem, es funktionierte gut unter iOS6, aber nicht unter iOS5. So habe ich es gelöst:

  1. Erstellen Sie eine neue Modellversion in xcode. (Wählen Sie .xcdatamodeld, öffnen Sie das Editor-Menü und klicken Sie auf "Modellversion hinzufügen ...")
  2. Kompilieren Sie und stellen Sie sicher, dass die neue Version funktioniert.
  3. Stellen Sie die alte als aktuelle Version ein. ("Aktuell" im Dateiinspektor für die.xcdatamodeld unter Versionierte Kerndatenmodell)
  4. Entfernen Sie den Verweis auf die .xcdatamodeld Datei in xcode
  5. Klicken Sie mit der rechten Maustaste auf .xcdatamodeld Datei im Finder und wählen Sie "Paketinhalt anzeigen".
  6. Löschen Sie das neue .xcdatamodel , das Sie nicht möchten
  7. Fügen Sie das erneut hinzu .xcdatamodeldFügen in xcode erneut hinzu
  8. Kompilieren und lächeln

(Hier habe ich herausgefunden, wie man eine Modellversion löscht: Wie man eine alte / nicht verwendete Datenmodellversion in Xcode löscht )

fredrik
quelle
Tack så mycket! Das war sehr hilfreich.
Michael Dorner
4

Ich löse das Problem, ohne Code zu ändern.

Ich füge die ModelName.xcdatamodeld über Datei-> Datei hinzufügen hinzu, anstatt die Datei in den Xcode zu ziehen.

 NSString *path=@"ModelName";

NSURL *modelURL = [NSURL fileURLWithPath:[path stringByAppendingPathExtension:@"momd"]];

model = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
Chris So.
quelle
1

Meinerseits war das Problem, dass ich die Groß- und Kleinschreibung einiger Zeichen im Datenbanknamen geändert hatte.

Beim Starten eines neuen Projekts richtet Xcode automatisch alles aus dem Projektnamen ein. Wenn Sie anfingen, Ihr Projekt "Rugbyontv" zu nennen und später beschlossen, zu "RugbyOnTV" zu wechseln und eine Suche und Ersetzung durchführten, würde dies das Problem lösen. (Dank an Rob für den Hinweis, dass bei dem Namen zwischen Groß- und Kleinschreibung unterschieden wird)

Brian Gerfort
quelle
1

Ich habe stundenlang nach einer Antwort gesucht und nichts hat funktioniert. Aber dann habe ich plötzlich diesen Artikel gefunden . Demnach bestand das Problem darin, den Root-Controller in diesem Teil von AppDelegate.m festzulegen:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    ListViewController *rootView = (ListViewController *)self.window.rootViewController;
    rootView.managedObjectContext = self.managedObjectContext;
    return YES;
}

In der Tat sollten Sie definieren, welcher Root-Controller Ihre CoreData-Verbindung delegieren soll. In meinem Fall war ein TabBarController mit anderen Ansichten verbunden, sodass mein Root-Controller für Zielansichten als TabBar definiert wurde und einen Fehler verursachte. ich habe mich verändert

ListViewController *rootView = (ListViewController *)self.window.rootViewController;

zu

ListViewController *rootView = (ListViewController *)self.window.superview;

und alles hat funktioniert.

Kokoko
quelle
1

Ich weiß, dass dies Ihr Problem nicht löst, aber ich bin gestern auf dieses Problem gestoßen, das mich stundenlang plagte. Die von @Dominic Williams veröffentlichte Lösung gab mir eine ArrayIndexOutOfBoundsException (unabhängig vom Objective-C-Äquivalent).

Ich bin noch nicht sehr gut mit Objective-C / Xcode, aber ich arbeite an einer iOS-App, die unser Unternehmen (meistens) extern entwickelt hat. Leider vergaßen sie oft die Verwendung einer Tastatur und verwendeten Großbuchstaben austauschbar oder buchstabierten Eigenschaften falsch, waren aber zu faul, um zurück zu gehen und sie zu ändern. Sie hatten einen Großbuchstaben im xcode-Projektnamen verwendet, wo er eigentlich nicht sein sollte (unser Produktname verwendet kein Großbuchstaben), und ich musste zurückgehen und jedes Vorkommen dieses Großbuchstabens in einen Kleinbuchstaben ändern ;; Dazu gehörten der Projektname, die Kerndatendatei, Hunderte von Variablen usw.

Sobald ich dies getan hatte, stieß ich auf diesen Fehler und keine Lösung konnte ihn für mich beheben. Ich hatte sichergestellt, dass alle URL-Namen korrekt waren, das Projekt bereinigt, die App deinstalliert, das Telefon neu gestartet usw., ohne Erfolg. Ich gab auf und schaltete meinen Mac aus und ging für den Tag nach Hause. Zu meiner Überraschung kam ich heute Morgen zurück und alles schien gut zu funktionieren!

Ich habe keine Ahnung, warum dies funktioniert hat, aber wenn Sie nicht weiterkommen, starten Sie Ihren Mac neu.

javajavajavajavajava
quelle
1

Wenn jemand wegen des gleichen Problems feststeckt. Stellen Sie sicher, dass Sie die Datenbank ordnungsgemäß verknüpft haben (da Sie den Code möglicherweise direkt aus einem Beispiel kopiert haben).
Aktualisieren Sie einfach den Namen der Datenbank in den MethodenagedObjectModel und persistentStoreCoordinator in AppDelegate.

nomann
quelle
1

Ich hatte das gleiche Problem, dh

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"MyModel" withExtension:@"momd"];

gab nil zurück, da keine .momd-Datei generiert wurde.

Der Grund war, dass xcode im App-Verzeichnis (z. B. MyGreatApp / MyGreatApp.app) MyModel.xcdatamodeld kopiert hatte, anstatt MyModel.momd aus der Datei MyModel.xcdatamodeld (mit momc) zu generieren.

Die Lösung bestand darin, den Verweis auf MyModel.xcdatamodeld im XCode-Projektbrowser zu löschen und ihn aus dem Finder zurück in das Projekt zu ziehen. Nachdem dieser xcode erkannt hatte, dass er zu einer .momd kompiliert werden musste.

Trausti Kristjansson
quelle
1

Ich hatte dieses Problem aus dem Nichts, nachdem ich die generierte App in der gelöscht hatte ~/Library/Application Support/iPhone Simulator. Irgendwie führte dies dazu, dass nachfolgende Builds im Simulator und auf Geräten fehlschlugen. Hatte seit Ewigkeiten nichts an CoreData geändert, aber es würde mit dem scheitern Cannot create an NSPersistentStoreCoordinator with a nil model. Versuchte ein paar Dinge oben und nichts funktionierte.

Ich konnte den generierten Momd-Ordner mit der darin enthaltenen Mom-Datei sehen. Die App im Simulator konnte beide sehen, konnte jedoch die SQLite-Datei nicht generieren.

Was es löste, war das Hinzufügen eines Attributs zu einer Entität in meiner xcdatamodeld-Datei in Xcode und das sofortige Löschen. Ich hatte gehofft, dass dies Xcode dazu bringen würde, alles, was das Problem verursachte, von Grund auf neu zu generieren, und es schien zu funktionieren. Immer noch nicht klar, was eigentlich falsch war, aber meine App läuft jetzt wieder im Simulator und auf den Geräten.

Alistair McMillan
quelle
0

Ich hatte gerade ein ähnliches Problem beim Upgrade von IOS5 auf IOS6. Es stellte sich heraus, dass beim Modellnamen zwischen Groß- und Kleinschreibung unterschieden wurde.

Ich bin mir nicht sicher, ob dies jemandem hilft.

Troy
quelle
0

Okay, ich werde zuerst eine halbe Lösung nennen, die funktioniert, wenn Sie die App neu installieren (im Simulator oder Debugger-Gerät). Aber das ist sicher keine echte Lösung. Wenn Sie beispielsweise Ihre Anwendung aktualisieren, tun Sie dies NICHT. Andernfalls kann Ihre neue Version abstürzen, da Benutzer sie nicht erneut installieren. Stattdessen verwenden sie die Schaltfläche "Aktualisieren".

Wie ich verstanden habe, tritt dieses Problem hauptsächlich auf, wenn Sie den Dateinamen des Datenmodells ändern. Der Grund könnte folgender sein :
. Wenn Sie die App zum ersten Mal ausführen, wird eine Datenmodelldatei im App-Bundle wie "data_model_1" erstellt. Diese Erstellung erfolgt nur zum ersten Mal.
. Wenn Sie den Dateinamen aktualisieren und die App erneut ausführen, kann sie nicht gefunden werden, da noch die Datei "data_model_1" vorhanden ist, Sie sie jedoch anweisen, nach "data_model_2" zu suchen. Wie kann es finden, es hat es noch nicht erstellt und wird es nicht, es sei denn, Sie installieren die App nicht mit neuem Dateinamen.

Wenn dies also die erste Version Ihrer App ist und eine Neuinstallation auf einem Simulator oder Gerät Ihrem Projekt keinen Schaden zufügt, versuchen Sie es. Else, überprüfen Kerndatenmodell Versionierung und Datenmigrationsleitfaden auf iOS Developer Library, vielleicht ist es das, was Sie brauchen.

Bearbeiten: Wenn die Neuinstallation nicht funktioniert, versuchen Sie zuerst, das Projekt zu deinstallieren, dann zu bereinigen, dann alles zu schließen, das Projekt erneut zu öffnen und Build + Run auszuführen. Das sollte funktionieren.

Kubilay
quelle
0

Wenn Ihr Projekt auf dem Simulator, aber nicht auf dem Gerät funktioniert, versuchen Sie, den Release-Build auf Ihrem Gerät anstelle des Debug-Builds auszuführen.

Wählen Sie Ihr Projekt -> Produkt -> Schema bearbeiten -> Konfiguration erstellen [DEBUG -> RELEASE]

Führen Sie nun das Projekt erneut aus, es wird funktionieren.

stackr
quelle
0

Ich bin auch mit diesem Problem konfrontiert, aber wenn ich die ModelName.xcdatamodeldDatei ändere, funktioniert es. Ich denke, die ModelName.xcdatamodeld Datei wurde nicht richtig hinzugefügt. Überprüfen und bereinigen Sie die App und führen Sie sie aus.

Nadella Ravindra
quelle
0

Nachdem ich das Namensproblem behoben hatte, blieb der Fehler bestehen. Dann funktionierte es nach dem Neustart von Xcode 5. Dies kann automatisch dasselbe tun wie einige der hier angebotenen manuellen Verknüpfungsvorschläge.

EthanP
quelle
0

Für mich war das Problem darauf zurückzuführen, dass ich mein Modell aus einem Sandbox-Projekt in mein eigentliches Projekt kopiert habe. Stellen Sie immer sicher, dass Sie Ihr Modell aus dem Projekt heraus generieren, in dem das Modell verwendet wird.

FujiRoyale
quelle
0

Ich konfrontierte diesen gleichen Fehler , wenn ich umbenannt die .xcdatamodelDatei von Xcode und änderte den umbenannten Namen in AppDelegate wo immer es nötig war, aber ich habe immer noch die gleichen Fehler. Keines der vorgeschlagenen Verfahren hat bei mir funktioniert.

Dann öffnete ich den Ordner in Finderund fand eine zusätzliche Datei .xccurrentversionzusammen mit der .xcdatamodelDatei. Ich habe es in der TextEditApp geöffnet und dies geändert:

<dict>
    <key>_XCCurrentVersionName</key>
    <string>Your_Renamed_Model_FileName.xcdatamodel</string>
</dict>

Ich verwende dies mit Xcode 6.4, OSX Yosemite 10.10.1

Ich hoffe, es hilft!

NeverHopeless
quelle