Problem mit [NSEntityDescription attributesByName]

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Problem mit [NSEntityDescription attributesByName]

    Hallo,
    ich hab' einen unerwarteten runtime error produziert.

    Quellcode

    1. -(void)imageSelection:(NSNotification*)notification
    2. {
    3. NSArray *selectedObjects = [[self wavesControllerOutlet] selectedObjects];
    4. if([selectedObjects count] == 0)
    5. {
    6. NSLog(@"updateSelection: [selectedObjects count] = 0 \n ");
    7. return;
    8. }
    9. [self setWavesEntityDescription:[selectedObjects objectAtIndex:0]];
    10. if(NO) NSLog(@"wavesEntityDescription: %@\n",[self wavesEntityDescription]);
    11. }
    Alles anzeigen


    Bis hierher ist alles ok.

    Quellcode

    1. -(id)wavesObjectForKey:(NSString*)key
    2. {
    3. NSDictionary *dict = [[self wavesEntityDescription]attributesByName];
    4. if(YES)NSLog(@"%@\n",dict);
    5. return [dict objectForKey:key];;
    6. }


    2012-09-25 00:26:50.712 GiveMeFive[19124:303] -[NSManagedObject attributesByName]: unrecognized selector sent to instance 0x101b3dd30
    Ich hab' die Methode aus der NSEntitDescription Class Reference für OS X 10.4 kopiert.


    Wer weiss was ?
    Uwe

    Mutti, kauf' mir 100 Euro !
  • macmoonshine schrieb:

    Du übergibst hier die Entität und nicht den Entitätstyp. Die Methode gehört zu NSEntityDescription und nicht zu NSManagedObject
    @property (strong) NSEntityDescription *wavesEntityDescription;
    NSLog(@"wavesEntityDescription: %@\n",[self wavesEntityDescription]);

    wavesEntityDescription: <NSManagedObject: 0x100160410> (entity: Waves; id: 0x10012e3a0 <x-coredata://9F9342D1-EA1B-4A2F-9C7D-99726BFFBAF7/Waves/p2> ; data: {
    frequency = 1;
    imageName = "Image 002";
    imageNumber = 1;
    isCurve = 1;
    isSelected = 0;
    phaseR = 0;
    phaseX = 0;
    phaseY = 0;
    phaseZ = 0;
    precision = 200;
    task = 2;
    xRotation = 0;
    yRotation = 0;
    zoom = 50;
    })

    Nix mit NSManagedObject

    Thallius schrieb:

    Also in dem Code tritt der Fehler nicht auf. Ich vermute mal eher im setWavesEntityDescription
    siehe oben.

    Danke, bitte weiter so !
    Uwe
    Mutti, kauf' mir 100 Euro !
  • DylansGhost schrieb:

    macmoonshine schrieb:

    Du übergibst hier die Entität und nicht den Entitätstyp. Die Methode gehört zu NSEntityDescription und nicht zu NSManagedObject
    wavesEntityDescription: <NSManagedObject: 0x100160410> (entity: Waves; id: 0x10012e3a0 <x-coredata://9F9342D1-EA1B-4A2F-9C7D-99726BFFBAF7/Waves/p2> ; data: {
    [...]
    Nix mit NSManagedObject

    Es muss schrecklich sein nicht lesen zu können.
    Doch selbst beim Schreiben seine Unfähigkeit noch so unter Beweis zu stellen ist wirklich mutig. :)

    Ich weiß ja, dass dynamische Typisierung nicht jedermanns Sache ist.
    Aber manchmal sollte man Dinge einfach mal glauben, anstatt sie beim Versuch des Widerlegens auch noch zu bekräftigen.

    DylansGhost schrieb:

    Danke, bitte weiter so!

    Danke nein, bitte nicht.
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Quellcode

    1. NSLog(@"\nclass :%@\n", [[self wavesEntityDescription]class]); // -> NSManagedObject aha !

    Das hilft mir jetzt auch nicht weiter.
    Wie wird aus einer entityDescription ein managedObject ?
    Wie komme ich nun an ein selektiertes Objekt heran ?

    Uwe

    p.s. Mit dem Glauben hab' ich es nicht so.
    Mutti, kauf' mir 100 Euro !
  • DylansGhost schrieb:

    Quellcode

    1. NSLog(@"\nclass :%@\n", [[self wavesEntityDescription]class]); // -> NSManagedObject aha !

    Das hilft mir jetzt auch nicht weiter.

    Das dachte ich mir.

    DylansGhost schrieb:

    Wie wird aus einer entityDescription ein managedObject?

    Gar nicht. Es ist zwar möglich, dass ein Objekt zur Laufzeit seine Klasse ändert - ist hier aber nicht der Fall.
    Dass du das NSManagedObject auf NSEntitiyDescription castest ist dem und seiner Klasse ziemlich einerlei.

    DylansGhost schrieb:

    Wie komme ich nun an ein selektiertes Objekt heran?

    Also noch näher als an das zu Grunde liegende NSManagedObject kommst du nun wirklich schwerlich an das selektierte Objekt.

    Aber wenn es dir hilft:

    C-Quellcode

    1. [self setWavesEntityDescription:[(NSManagedObject*)[selectedObjects objectAtIndex:0] entity]];

    Ich vermute übrigens, dass es dir nicht helfen wird.

    DylansGhost schrieb:

    p.s. Mit dem Glauben hab' ich es nicht so.

    Das ist schlecht. Es wird schwierig, Wissen aufzunehmen, wenn man sich weigert einerseits Anderen Glauben zu schenken und andererseits zu lesen.
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Wenn entityDecription sich wie managedObject verhält, dann behandle ich es auch so. Hab's schon ausprobiert.

    Quellcode

    1. -(id)waveObjectForKey:(NSString*)key
    2. {
    3. id obj;
    4. id selected;
    5. for(obj in [self wavesEntityDescription])
    6. {
    7. [obj willAccessValueForKey:key];
    8. selected = [obj valueForKey:key];
    9. [ obj didAccessValueForKey:key];
    10. }
    11. return selected;
    12. }
    Alles anzeigen

    Lucas de Vil schrieb:

    Das ist schlecht. Es wird schwierig, Wissen aufzunehmen, wenn man sich weigert einerseits Anderen Glauben zu schenken und andererseits zu lesen.
    Ich glaube nur an Gott, nicht an Lucas den XVI :)
    Man hat mich zu oft belogen, man hat mir zu viel verschwiegen. 600 Jahre herrschte das geozentrische Weltbild, obwohl schon die ollen Ägypter daran zweifelten.
    Das Wissen, das ich mir angeeignet habe kann sich wissen lassen, Programmierung ist nur ein Werkzeug, das ich brauche um meinen Schazz zu beschreiben,
    um ihn Interessierten zu vermitteln,kostenlos, zum Kohle machen hab' ich keine Lust, wie sagt Rutger Hauer in 'Blade Runner' :
    "Wenn du sehen könntest, was ich mit deinen Augen gesehen habe".

    Mach's gut und bleib mir treu, ich hab' bestimmt noch andere Probleme zu lösen.
    Uwe
    Mutti, kauf' mir 100 Euro !

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von DylansGhost ()