2016-05-17 10 views
1

ich den folgenden Code haben,Wie konvertiere ich NSLog in String?

#define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); 

Wie konvertiere ich NSLog Ausgabe in einen String, so dass ich in Log-Parameter übergeben kann? siehe unten.

#define DLog(fmt, ...) [MyClass log:NSLogString]; 

Antwort

1

Sie können NSLog-Ausgabe nicht in eine Zeichenfolge konvertieren. NSLog sendet seine Ausgabe an die Standardausgabe. Es führt eine Dateioperation aus.

sollten Sie in der Lage sein, Code wie folgt zu verwenden:

void DLog(NSString* format, ...) 
{ 
    va_list params_list; 

    //Extract the variable-length list of parameters 
    va_start(params_list, format); 

    NSString *outputString = [[NSString alloc] initWithFormat: format 
     arguments: params_list]; 

    //Now do what you want with your outputString 

    //Now clean up the var_args. 
    va_end(params_list); 
} 

Die Magie ist die NSStringinitWithFormat:arguments: Methode, die eine params_list von var_args und gibt einen String extrahiert nimmt. Das ist, was du willst.

+0

ich habe #define für DLog verwendet, wie verwende ich diese Methode? Wo sollte ich es hinstellen, weil ich DLog in .pch Datei vorher hatte. Vielen Dank. – PashaN

+0

Es ist kein Makro, es ist eine andere Funktion, NSLog zu ersetzen. Sie können die Definition in Ihre .pch-Datei einfügen, wenn Sie möchten, oder einfach eine globale Funktion erstellen und eine .h-Datei wie jede andere erstellen. –

+0

Wie setze ich die Definition in .pch? kannst du mir ein beispiel geben oder verlinken? Vielen Dank. – PashaN

0

ist das was du willst?

#define DLog(...) NSLog(__VA_ARGS__) 
+0

was ich will ist, wenn Benutzer DLog Makro aufrufen, es sendet, was an eine Zeichenfolge übergeben wird. – PashaN