1

我的应用程序中有一个将字符串写入文件末尾的方法:

-(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。但我在任何地方都找不到对这个错误的任何引用。谷歌没有帮助。有没有人见过这个?难道我做错了什么?

4

1 回答 1

1

我的感觉是 NSCocoaErrorDomain 映射到 UNIX errno 值,而 errno 24 是“打开的文件太多”。仔细查看NSFileHandle 类参考。还,

[myHandle seekToEndOfFile]; [myHandle writeData:[str dataUsingEncoding:NSUTF8StringEncoding]]; [myHandle closeFile];

应该在你的其他情况下

if (!myHandle)

测试。

于 2013-08-30T22:18:43.493 回答