1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

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

Dieses Thema im Forum "OS X-Developer" wurde erstellt von MatzeLoCal, 19.08.06.

  1. MatzeLoCal

    MatzeLoCal Rheinischer Bohnapfel

    Dabei seit:
    05.01.04
    Beiträge:
    2.421
    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).
     

Diese Seite empfehlen