String nicht mehr lesbar nachdem er archiviert wurde

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

  • String nicht mehr lesbar nachdem er archiviert wurde

    hallo,

    ich habe hier diesen string:

    @" Bleak - Noon Shape (Original Mix) [DH041].mp3 "

    den packe ich in ein MutableDictionary, archiviere es zu NSDATA und schreibe es dann in mein DocumentsDirectory. funktioniert alles ohne Probleme,
    aber wenn ich mir den string dann wieder hole, schaut er so aus:

    @" Bleak - Noon Shape (Original Mix) %5BDH041%5D.mp3 "



    kann mir jemand eine kurze Hilfestellung geben, vor allem was das verursacht und wie oder ob man das verhindern kann.

    danke
  • Hier der Code dazu.

    ich setze einfach über setObject ForKey den String und übergebe dann das Dic hier:

    Quellcode

    1. -(void)saveTrackInfoWithMDic:(NSMutableDictionary *)trackDic{
    2. NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    3. NSString *path = [paths firstObject];
    4. path = [path stringByAppendingPathComponent:@"trackInformations"];
    5. NSMutableArray *trackInformations = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
    6. if (!trackInformations) {
    7. trackInformations = [[NSMutableArray alloc]init];
    8. [trackInformations addObject:trackDic];
    9. }
    10. if (trackInformations) {
    11. [trackInformations addObject:trackDic];
    12. }
    13. NSOrderedSet *orderetSet = [NSOrderedSet orderedSetWithArray:trackInformations];
    14. NSMutableArray *orderedArray = [NSMutableArray arrayWithArray:[orderetSet array]];
    15. NSData *newTracksInfoData = [NSKeyedArchiver archivedDataWithRootObject:orderedArray];
    16. //WRITE
    17. NSError *error;
    18. BOOL infoSaved = [newTracksInfoData writeToFile:path atomically:YES];
    19. if (infoSaved) {
    20. NSLog(@"saved");
    21. }
    22. if(!infoSaved){
    23. NSLog(@"error: %@", error);
    24. }
    25. }
    Alles anzeigen



    und wenn ich mir es wieder hole, und den string ausgebe, ist er nicht mehr lesbar.. dazwischen passiert nichts. einfach speichern und wieder laden.




    Quellcode

    1. -(NSMutableArray *)getTracks{
    2. NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    3. NSString *path = [paths firstObject];
    4. path = [path stringByAppendingPathComponent:@"trackInformations"];
    5. NSMutableArray *trackInformations = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
    6. if (trackInformations) {
    7. NSMutableArray *tracksInfoArray = [[NSMutableArray alloc]init];
    8. for (NSMutableDictionary *trackInfoDic in trackInformations) {
    9. NSString *type = [trackInfoDic objectForKey:@"type"];
    10. if ([type isEqualToString:@"track"]) {
    11. [tracksInfoArray addObject:trackInfoDic];
    12. }
    13. }
    14. return tracksInfoArray;
    15. }
    16. returnnil;
    17. }
    Alles anzeigen
  • Hallo,

    der Code könnte optimiert werden…

    Aber dort liegt nicht Dein Problem. Die Maskierung erfolgt irgendwo anders.
    -archive und -unarchive sind dafür nicht verantwortlich.

    An welcher Stelle überprüfst Du Dein Text?
    Im Code gibt es kein Log. Verwendest Du Breakpoints?

    Warum verwendest Du keine Plist?
    Dann könntest Du Dir auch "einiges" an Arbeit sparen.

    Viele Grüße
  • @Thallius

    nein. im label von der tableview cell stehts auch so..

    danke fürs probieren, @NSObject ich werds einfach mal so lassen und auf ein update warten... hab jetzt schon öfter Probleme gehabt, die dann nach einem update weg waren, vor allem im spritekit.

    @little_pixel

    die logs hab ich blos wieder rausgemacht, aber ich hatte das ganze 3 mal geloggt, vorm - unterm und nachm speichern. und er war dann auch nur danach verändert..

    ich habe das ganze direkt nach der getTracks Methode überprüft..

    bei mir ist die Methode in einer singleton-klasse, das sollte aber auch nichts damit zu tun haben oder?





    trotzdem danke an alle für die Hilfe ;)
  • xxNEOxx schrieb:

    ich werds einfach mal so lassen und auf ein update warten... hab jetzt schon öfter Probleme gehabt, die dann nach einem update weg waren, vor allem im spritekit.
    Hat damit sicher nichts zu tun. Solch ein bug würde an millionen stellen auffallen.

    Wenns dich interessiert warum es so ist, dann schreib ein kleines sample-projekt das du hier hochladen kannst.
    Meist findest du beim Schreiben des Samples eh schon den Fehler ;)