Datei lesen Problem = Absturz

S

silentx

Aktives Mitglied
Thread Starter
Dabei seit
30.08.2011
Beiträge
375
Reaktionspunkte
16
Hat jemand eine Idee wie ich hier einen Fehler abfangen könnte?
Code:
    @try {
        lstrData = [[NSMutableString alloc] initWithContentsOfFile:pstrPath encoding:NSWindowsCP1250StringEncoding error:lerr]; // HIER GIBT ES DEN FEHLER
        CSVParser *lcsvData = [[CSVParser alloc] initWithString:lstrData separator:pstrSeparator hasHeader:NO fieldNames:nil];
        lamuData = [lcsvData arrayOfParsedRows];        
    } @catch (NSException *e) {
        return [NSMutableArray new]; 
    } @finally {
    }

Im Sumulator gibt es keinen Fehler dann läuft das ganze ohne Probleme, also da geht es richtig mit dem @try, aber auf dem Telefon selber hängt er sich dann immer auf = Absturz...
 
vorher mal prüfen, ob die datei auch existiert?
warum denn NSMutableString? und warum nicht stringWithContentsOfFile:encoding:error: ?
 
1. Die Datei Existiert
2. mit stringWithContentOfFile kommt es zum selben absturz

Hätte dann ein normaler String da keine Probleme? Denn er soll ja einfach den Inhalt der Datei auslesen.
 
willst du den string denn noch verändern?
wenn ich das richtig sehe, willst du doch einfach die datei in den string packen, um die parsen zu können...
 
lstrData = [[NSMutableString alloc] initWithContentsOfFile:pstrPath encoding:NSWindowsCP1250StringEncoding error:lerr]; // HIER GIBT ES DEN FEHLER

Das "lerr" sieht falsch aus. Handelt es sich um ein lokales NSError object, sollte es "&lerr" heissen.
Es empfielt sich immer

http://stackoverflow.com/questions/1163981/how-to-add-a-breakpoint-to-objc-exception-throw

und im Debugger dann ein

bt

tippen...

Mehr Kontext ist bei Code immer gut.

EDIT: Hier ein Beispiel
http://stackoverflow.com/questions/8984308/initwithcontentsoffile-deprecated
 
  • Gefällt mir
Reaktionen: silentx
@oneOeight
Ja ich will einfach den Text vom File Parsen

@pmau
So ist diese Variable definiert, sollte meiner Meinung nach kein Problem darstellen oder doch?
Code:
NSError **lerr;
 
Doch. Wie in dem Link im Edit beschrieben.
Richtig:
Code:
NSError *lerr = nil;
[ .... error:&lerr];

EDIT: Und das "= nil" ist ebenfalls von Belang.
Sonst steht Bitmüll vom Stack drin.
 
Habe jetzt folgendes angepasst:
Code:
NSError *lerr;
...
lstrData = [NSString stringWithContentsOfFile:pstrPath encoding:NSWindowsCP1250StringEncoding error:&lerr];

Jetzt kommt kein Fehler mehr (bzw. er meldet es ginge nicht, was bei meinem Testfile korrekt ist)...

Danke auch beiden für die Unterstützung...

ErrorMeldung welche geworfen wird:
Code:
Error Domain=NSCocoaErrorDomain Code=261 "The operation couldn’t be completed. (Cocoa error 261.)" UserInfo=0x1c5b00 {NSFilePath=/var/mobile/Applications/3FBB65F7-6E3F-4A9F-9BB2-86AC0BAFF5B1/Documents/files/PapstListe13.csv, NSStringEncoding=15}
Weiss ich jetzt auch noch nicht was die für ein Problem hat, mal schauen. Sonst gehen die Dateien ohne Schwierigkeiten, bis auf diese eine wo anscheinend etwas nicht stimmt.
 
Zuletzt bearbeitet:
Zurück
Oben Unten