我在我的应用程序中有一个方法,它将一个字符串写入文件的末尾:
-(void)log:(NSString *)str
{
if (![[NSFileManager defaultManager] fileExistsAtPath:self.logPath])
[[NSFileManager defaultManager] createFileAtPath:self.logPath contents:nil attributes:nil];
NSError *err = nil;
NSFileHandle *myHandle = [NSFileHandle fileHandleForWritingToURL:[NSURL fileURLWithPath:self.logPath] error:&err];
if (!myHandle)
NSLog(@"Failed to write file - %@", err.localizedDescription);
[myHandle seekToEndOfFile];
[myHandle writeData:[str dataUsingEncoding:NSUTF8StringEncoding]];
[myHandle closeFile];
}它工作了一段时间,然后开始失败;fileHandleForWritingToURL返回nil。我得到的错误是NSCocoaErrorDomain错误24。但是我在任何地方都找不到任何关于这个错误的参考。谷歌帮不上忙。有人见过这个吗?我做错了什么吗?
发布于 2013-08-30 22:18:43
我的感觉是,NSCocoaErrorDomain映射到UNIX值,errno 24是“打开的文件太多”。仔细看看NSFileHandle类引用。另外,
[myHandle seekToEndOfFile]; [myHandle writeData:[str dataUsingEncoding:NSUTF8StringEncoding]]; [myHandle closeFile];
应该是在其他情况下
if (!myHandle)
测试。
https://stackoverflow.com/questions/18541790
复制相似问题