2010-10-28 9 views
5

Ich erstelle eine iOS App, die eine Textdatei einliest und den Inhalt in einem UIText Feld anzeigt.stringWithContentsOfFile und initWithContentsOfFile geben null nach mehreren Durchläufen zurück

Für die ersten drei aufeinander folgenden Läufe der the-app (Neustarten einer neuen Sitzung ohne zu beenden), werden die Daten in Ordnung gelesen. Beim vierten Versuch sind die von der Datei zurückgegebenen Daten jedoch alle Nullwerte.

Ich habe die Integrität der Datei überprüft. Das Problem tritt auf, wenn Sie stringWithContentsOfFile oder initWithContentsOfFile verwenden.

Nach vielen Stunden der Fehlersuche glaube ich, dass das Problem irgendwie damit zusammenhängt, dass ein Puffer innerhalb der oben genannten Methoden gelöscht wird.

Jede Einsicht in dieses Problem wird sehr geschätzt. Ich habe viele Dinge ohne Glück versucht.

Hier ist der Code, den ich in der Datei, um zu lesen:

TheString = [NSString stringWithContentsOfFile:[[NSBundle mainBundle]  
pathForResource:@"My_TextFile" ofType:@"txt"] encoding:NSUTF8StringEncoding error:NULL]; 

Hier ist der Code, den ich (in einem Array vom Typ NSArray platziert Der Inhalt) bestimmten Inhalt der Datei anzuzeigen verwenden:

NSArray *My_Array; 

My_Array= [TheString componentsSeparatedByString:@"\n"]; 

/* Obtain specific data to display */ 
    DisplayedData = [My_Array objectAtIndex:M[l]-1]; 
: 
: 
/* Display the data in the view */ 
    MyUITextView.text = DisplayedData; 

/* Log the data */ 
    NSLog(@"%@", MyUITextView.text); 

Am 4. Aufruf des Codes oben kehrten die Daten sind leer und NSLog kehrt nulls

Vielen Dank für jede Hilfe!

Antwort

5

Vielleicht bin ich ein bisschen spät mit der Antwort, aber, vielleicht, jemand wird es nützlich finden. OK, ich habe auch einen Tag damit verbracht, herauszufinden, warum meine benutzerdefinierte Klasse für scrollbare Ansicht 3 mal funktioniert und zum 4ten Mal ablehnt ... Ich habe festgestellt, dass das Problem ziemlich die gleichen Attribute hat wie Ihres: verschachtelte NSString Objekte verschwinden unerwartet. Obwohl Zeiger auf die gleiche Adresse im Speicher zeigen, ist der Speicher bereits mit ziemlich beliebigen Objekten gefüllt, stattdessen meine NSString s. Und ich darauf geachtet, dass ich geschaffen, um diese NSString s die folgende Klassenmethode:

+ (id)stringWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error 

Also, ich bin nicht der Besitzer dieser NSString s. Und ich davon ausgegangen, dass der Eigentümer zu sein, kann eine Lösung sein, so dass ich meinen erstellt NSString s durch alloc und

- (id)initWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error 

Instanzmethode.

App wurde repariert!

Verwandte Themen