Gih*_*han 5 objective-c nsfilehandle ipad ios
这可能是一个相当广泛的问题,但我找不到任何在线资源解决或解释这个问题.
问题是在创建之后NSFileHandle *writer = [NSFileHandle fileHandleForWritingAtPath:"path"],当你使用时[writer writedata:"NSData"],根据apple doc可能会触发正弦可能的异常.
"如果文件描述符关闭或无效,如果接收器表示未连接的管道或套接字端点,文件系统上没有剩余空间,或者发生任何其他写入错误,则此方法引发异常." - APPLE DOC
我想知道的是,在写入之前,我们可以通过任何方式处理或验证这些问题而无需使用任何try catch或检查条件检查中的每个错误.我们可以用任何可能的方式NSError来处理这个问题?
我会说"不".如果您在写入之前确实设法找到涵盖所有可能的故障的测试,那么在初始测试之后没有什么可说的写操作可能会失败(考虑写入一个免费1KB的文件系统并且您想写4KB).
因此,在@try/@catch块中包含对这些方法的调用在我看来是最好的方法.NSError **如果你想要失败的细节(你当然应该想要),这些包装器可以返回一个.
- (BOOL)writeData:(NSData *)data
toFileHandle:(NSFileHandle *)fileHandler
error:(NSError **)error
{
@try
{
[fileHandler writeData:data];
}
@catch (NSException *e)
{
if (error != NULL)
{
NSDictionary *userInfo = @{
NSLocalizedDescriptionKey : @"Failed to write data",
// Other stuff?
};
*error = [NSError errorWithDomain:@"MyStuff" code:123 userInfo:userInfo];
}
return NO;
}
return YES;
}
Run Code Online (Sandbox Code Playgroud)
你当然希望得到失败的原因NSError,但对我来说,如何去做这件事并不是很明显.
| 归档时间: |
|
| 查看次数: |
4672 次 |
| 最近记录: |