• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

[CoreData]: NSTable bleibt leer beim Füllen in awakeFromNib

MatzeLoCal

Rheinischer Bohnapfel
Registriert
05.01.04
Beiträge
2.422
Tag auch.

Ich versuche gerade eine Anwendung zu schreiben die dem User über ein NSTableView Daten anzeigt, die er dann klicken kann und darauf kommen dann weitere Anzeigen.. soweit kein Problem... aber nun wollte ich, dass wenn noch keine Daten vorhanden sind, Standardwerte erzeugt werden.

Dazu habe ich dann im _AppDelegate in der awakeFromNib ein Prüfung eingebaut, die dann entsprechende füllt.

So, nun werden die Daten zwar eingetragen, aber im TableView erscheinen sie nicht.

Die Bindings sind soweit korrekt gesetzt, wo liegt also der Fehler?

Hier der Code:

Code:
-(void)awakeFromNib
{
		defaultInitAmount = 5;
		initID = 0;
		
		if([self fetchForEmptiness]) {
				NSLog(@"Defaults werden erzeugt!");
		}
		[self fetchForEmptiness];
}

- (BOOL)fetchForEmptiness
{
	NSError *error;
	
	NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
	[fetchRequest setEntity:[NSEntityDescription entityForName:@"Device" inManagedObjectContext:[self managedObjectContext]]];
	[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"deviceID>=0"]];
	
	NSArray *result = [[self managedObjectContext] executeFetchRequest:fetchRequest error:&error];
	NSAssert(result != nil, ([NSString stringWithFormat:@"Fehler beim request: %@ ",error]));
		NSLog(@"Count ist %d", [result count]);
	if([result count]==0) {
		while(initID<defaultInitAmount) {
			NSLog(@"CurrentID: %d", initID);
			[self fillWithDefaults];
		}
		return TRUE;
	} return FALSE;
}


- (void)fillWithDefaults
{
	NSManagedObject *device = [NSEntityDescription insertNewObjectForEntityForName:@"Device" inManagedObjectContext:[self managedObjectContext]];
	[device setValue:[NSNumber numberWithInt:initID++] forKey:@"deviceID"];
	[device setValue:[NSString stringWithFormat:@"Testgeraet %d",initID] forKey:@"deviceName"];
	NSLog(@"DeviceID: %@ DeviceName: %@",[device valueForKey:@"deviceID"],[device valueForKey:@"deviceName"]);
	
}

Es gibt nur ein Entity (Device) und das hat deviceID (int16) und deviceName (String).