我的应用程序中有一个方法可以将字符串写入文件末尾:
-(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。但我无法在任何地方找到任何对此错误的引用。谷歌没有帮助。有没有人见过这个?我做错了什么吗?
最佳答案
我的感觉是 NSCocoaErrorDomain 被映射到 UNIX errno 值,而 errno 24 是“太多打开的文件”。仔细看看 NSFileHandle class reference .还有,
[myHandle seekToEndOfFile];
[myHandle writeData:[str dataUsingEncoding:NSUTF8StringEncoding]];
[myHandle 关闭文件];
应该是你的其他情况
if (!myHandle)
测试。
关于ios - NSFileHandle fileHandleForWriting 返回 nil,错误代码 24,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18541790/