• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> 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).