一个旧的解析器依赖于FILE *工作.但是,Dropbox Sync API for iOS会返回一个NSFileHandle *而不是FILE *一个文件句柄.
所以,我尝试使用fileDescriptor的NSFileHandle:
- (NSFileHandle )readHandle:(DBError*)错误
返回文件的只读文件句柄.如果文件未缓存,则该方法将阻止,直到文件被下载.返回
如果可以读取文件,则为文件句柄;如果发生错误,则为nil.
并作为一个传递FILE *:
- (void)loadDBFile:(DBFile *)dbFile
{
DBError *dbError;
NSFileHandle *fileHandle = [dbFile readHandle:&dbError];
if (fileHandle) {
FILE *file = fileHandle.fileDescriptor;
fseek(file, 0, SEEK_END); // EXE_BAD_ACCESS here!
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
然而,有一个EXE_BAD_ACCESS在fseek行.
fileDescriptor返回底层文件描述符,一个简单的整数,而不是一个FILE对象(包装文件描述符,但不是同一个东西).用于从文件描述符中fdopen()获取FILE对象:
FILE *file = fdopen([filehandle fileDescriptor], "r"); // Create a read-only FILE object
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1450 次 |
| 最近记录: |