NSFileHandle fileHandleForWriting返回nil,错误代码24

时间:2013-08-30 21:34:52

标签: ios file-io nsfilehandle

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

-(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.但我无法在任何地方找到任何对此错误的引用。谷歌没有帮助。谁看过这个吗?我做错了吗?

1 个答案:

答案 0 :(得分:1)

我的感觉是NSCocoaErrorDomain映射到UNIX errno值,而errno 24是“太多打开文件”。仔细查看NSFileHandle class reference。此外,

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

应该是

的其他情况

if (!myHandle)

测试。