NSAttributedString und encodeObject

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

  • NSAttributedString und encodeObject

    Hi,

    ich habe ein kleines Problem. Mein Programm hat einen NSTextView und der Value ist an einen NSAttributedString gebunden.

    Soweit funktioniert auch alles. Dieser NSAttributedString ist in einer Klasse definiert und die Klasse weißt die Methoden encodeWithCoder und initWithCoder auf.
    Die Klasse hat noch ein paar andere Variablen (NSString und nen Haufen ints).

    Speichern und laden klappt auch problemlos, AUSSER beim NSAttributedString. Das bekommt er nicht hin. Wenn ich das ganze speicher und wieder lade ist der Inhalt weg.

    Gibt es beim NSAttributedString irgenwas zu beachtet? funktioniert [NSAttributedString encodeObject:forKey] nicht einfach so?

    Ich hoffe ihr könnt mir helfen.

    LG
  • Hier mal die Klasse

    Character.h
    #import <Cocoa/Cocoa.h>
    @interface Character : NSObject <NSCoding> {
    NSAttributedString *attString;
    }

    @property (readwrite,copy) NSAttributedString *attString;
    @end



    Character.m
    #import "Character.h"

    @implementation Character

    @synthesize attString;

    - (id)init {
    self=[super init];
    if(self){
    attString=[[NSAttributedString alloc] initWithString:@""];
    }
    return self;
    }

    - (void)encodeWithCoder:(NSCoder *)aCoder {
    [aCoder encodeObject:attString forKey:@"attString"];
    }

    - (id)initWithCoder:(NSCoder *)aDecoder {
    self=[super init];
    if(self){
    attString=[aDecoder decodeObjectForKey:@"attString"];
    }
    return self;
    }
    @end

    Achja, hier ist die Methode welche dann ein Object vom Typ Character (unten characterObject genannt) speichert:
    - (IBAction)saveCharacter:(id)sender {

    NSSavePanel *sp=[NSSavePanel savePanel];
    [sp setAllowedFileTypes:[NSArray arrayWithObject:@"sr5mngchar"]];
    if ([sp runModal]==NSFileHandlingPanelOKButton){

    NSURL *filename=[sp URL];

    [NSKeyedArchiver archiveRootObject:characterObject toFile:[filename path]];

    }

    }

    Edit: irgendwie kann ich das nicht als Quellcode posten.

    Edit2: Ok, ich habe herausgefunden woran es liegt, weiß aber nicht wie ich es lösen kann: Immer dann wenn im NSTextView noch bearbeitet wird, dann schafft er es nicht mit dem Speichern. Was ja irgendwie auch Sinn ergibt. Wie bekomme ich es hin, dass er das bearbeiten vorher aufhört?

    Edit3: [[textViewOutlet window] makeFirstResponder:nil] löst mein Problem! Falls jemand auch auf so ein Problem stößt, dies ist die Lösung.

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von Murray ()