Frage

Ich weiß, dass dies keinen Sinn ergibt, aber ich bekomme einen wirklich seltsamen Fehler in einer iPhone -App, die ich mit Kerndaten erstelle und CGrectOffset aufruft. Die Didfinishlaunching -Methode meines App -Delegiertens sieht so aus:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

// Setup the Managed Object Context
NSManagedObjectContext *context = [self managedObjectContext];
if (!context) {
    // Do something - Like exit
}

//Load up the database form a pList
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"tJournals" ofType:@"plist"];
NSMutableArray *plistJournals = [NSMutableArray arrayWithContentsOfFile:plistPath];

//Create a bunch of journals
for (NSDictionary *journal in plistJournals) {
    [TJournal journalWithDictionary:journal inManagedObjectContext:context];
}

NSError *error = nil;
[context save:&error];

// ------ Create the View Controller ------
// The Scrolling List
JournalListVC *jvc = [[JournalListVC alloc] init];

// Adjust for the Status Bar's height
CGRect viewFrame = CGRectOffset(jvc.view.frame, 0.0, 20.0);
jvc.view.frame = viewFrame;

jvc.managedObjectContext = context;

// Add the View Controller to the screen
[self.window addSubview:jvc.view];
[self.window makeKeyAndVisible];

return YES;
}

Derzeit stürzt die App mit dem folgenden Fehler ab, wenn ich das verlasse CGRECT Viewframe Linie in:

"Beenden Sie die App aufgrund einer ungekordenen Ausnahme 'nSinternalinconsistencyException', Grund: '+EntityForname: konnte ein nsmanagedObjectModel für Entitätsnamen' Tjournal '' '' '' '' '' nicht nicht lokalisieren."

Wenn ich die CGRECT -Linie kommentiere, läuft sie gut. Der Anruf in der für die Loop ausgeführt ausführlich (es schreibt Daten in ein Kerndaten -DB -Entitätsnamen tjournal und tut genau das, was es vermutet hat). Offensichtlich gibt es keine Abhängigkeit von Kerndaten für CGrectOffset. Ich vermute, dieser Fehler ist also, dass dieser Fehler ist falsch. Aber ich kann es für mein Leben nicht herausfinden.

Ich habe versucht, alle Ziele zu reinigen, die Datenbank im Simulator auszulöschen usw. Aber nichts scheint zu funktionieren.

Irgendwelche Ideen? Vielen Dank!

War es hilfreich?

Lösung

Beachten Sie das, wenn Sie sich verweisen jvc.view.frame, Es wird dynamisch die Ansicht von JVC geladen. Wenn der Inhalt der Ansicht (oder XIB!) Eine Abhängigkeit von einem verwalteten Objektkontext hat, wenn er geladen ist, kann dies den Fehler erzeugen.

Versuchen Sie, das zu bewegen jvc.managedObjectContext = context; Linie bis direkt danach JournalListVC *jvc = [[JournalListVC alloc] init];.

(PS: Ihre Ansicht sollte die Statusleiste nicht berücksichtigen müssen. Stattdessen sollte Ihr UIWindow dies tun, und dann sollte der Rahmen der Ansicht Ihres Ansichtscontrollers nur die Grenzen des Fensters sein.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top