• 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

Value Transformer wird nicht verwendet

madmaurice

Jamba
Registriert
05.03.11
Beiträge
59
ich versuche mich gerade an meiner ersten Core Data Anwendung und möchte unter anderem ein Datum pro Datensatz in einer NSTableView in einem ganz bestimmten Format darstellen. ich habe die Spalte mit dem passenden Feld des Datensatz gebindet und das funktioniert auch ohne Probleme. Dann habe ich eine subclass der NSValueTransformer mit den Methoden transformedValueClass, allowsReverseTransformation und transformedValue implementiert, das setValueTransformer:forName: in die applicationDidFinishLaunching gesteckt und den angegebenen Namen als Value Transformer bei dem entsprechenden Binding angegeben. Allerdings hat sich die Ausgabe kein bisschen verändert. habe noch ein NSLog in die transformedValue gesteckt, was allerdings nicht ausgegeben wird. Daher frag ich mich warum der Value Transformer nicht genutzt wird obwohl er angegeben wurde?

Code:
@implementation DateValueTransformer

- (id)init{
    self = [super init];
    if (self) {
        // Initialization code here.
    }
    
    return self;
}


+ (Class) transformedValueClass {
    return [NSString class];
}


+ (BOOL) allowsReverseTransformation {
    return NO;
}


+(id)transformedValue:(id)value {
    if(value == nil) return nil;
    
    NSDate* d = value;
    NSString* dateString = [d descriptionWithCalendarFormat:@"%d.%m.%Y %H:%i" timeZone:nil locale:nil];
    NSLog(@"%@",dateString);
    return dateString;
}


@end
 

MacApple

Schöner von Bath
Registriert
05.01.04
Beiträge
3.652
Die Methode transformedValue: muss eine Instanzmethode sein, keine Klassenmethode.

MacApple
 

madmaurice

Jamba
Registriert
05.03.11
Beiträge
59
dann war das tutorial was ich hatte falsch^^ dankö probier ich gleich mal aus.

EDIT: funktioniert.