我正在做一个iOS库项目,需要创建一个API,它接受一个NSString参数,该参数是一个路径,库将把一些调试消息写入该路径中的文件。
我做了一些关于登录iPhone文件系统中的文件的研究,一种方法是使用
freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding],"a+",stderr);
这将重定向任何以下NSLog到一个文件…
虽然这看起来很容易,但我有一个问题:这是否也会将API消费者的应用程序(调用应用程序)的NSLog重定向到该文件?我不想要这种行为,因为我想要能够控制作为库的内容。
如果这是行为,我可以使用什么其他方法来实现我的需求?谢谢。
如果我理解正确,所需的功能是传递路径并将一些调试信息写入该路径上的文件?如果是这样的话,我认为你不应该将所有的NSLog
调用重定向到一个文件;只要使用NSString writeToFile:
就足够了:
-(void)writeToFile:(NSString*)path {
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *fileName = [documentsDirectory stringByAppendingPathComponent:path];
NSError *error=nil;
NSString *myMessage="This is the data to write to the file";
[myMessage writeToFile:fileName atomically:YES encoding:NSUTF8StringEncoding error:&error];
}
如果你想添加到那个文件,你可以使用NSFileHandle
功能-查看这里的文档。