2012-07-05 84 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