2012-07-05 64 views
3

我想檢查一下是否有一些字符串NSLog()已經打印出來了。如何檢查NSLog輸出?

有沒有一種方法可以檢查NSLog語句輸出的長度或從中創建一個字符串?這是爲了一個概念證明,而不是一個實際的解決方案,所以最好的實踐問題可以放在一邊。

+2

你是否試圖捕獲來自你不控制的代碼的'NSLog'語句,或者你可以用別的東西代替'NSLog'語句嗎? – gaige 2012-07-05 11:36:27

+0

我正在嘗試捕獲語句。 – 2012-07-05 11:37:59

+1

嗯,我不知道應該怎麼做,但我想起點可能是檢查'stdout'文件。我認爲NSLog正在寫它,就像printf一樣。我不知道的是如何以及何時'stdout'自己刷新。 – George 2012-07-05 11:49:13

回答

0

嘗試檢查長度:

NSLog(@"%i",[string length]); 

int len = [myString length]; 
if(len == 0){ 
    NSLog(@"String is empty"); 
} 
else{ 
    NSLog(@"String is : %@", myString); 
} 

如果要檢查字符串是否爲空或不然後嘗試:

if ((NSNull *)string != [NSNull null]){ 

} 
+0

這對我不起作用。我知道我正在將數據傳遞給NSLog,我知道它不是null。我想嘗試從日誌中取回它作爲概念的證明。 – 2012-07-05 12:16:43

0

您可能需要您的NSLog()輸出重定向到一份文件。看看「Redirect NSLog to stdout?」。

這隻會影響來自應用程序的NSLog()調用。

int fd = creat ("/Users/parag/Desktop/my_log", S_IRUSR | S_IWUSR | S_IRGRP | 
S_IROTH); 
close (STDERR_FILENO); 
dup (fd); 
close (fd); 
NSLog(@"this will be written to my_log"); 
// Now you can retrieve it back from the my_log as a proof of concept