一、问题现象
在 Kotlin Multiplatform 项目中实现 iOS 平台的文件存储时,出现如下情况:
- 现象:导出
.xcappdata 可以确认文件确实在 Documents 目录下,但用 NSData.dataWithContentsOfFile 读取时始终返回空。
- 报错:
No such File or Directory(找不到该文件或目录)。
当时使用的读取代码如下(为便于排查,增加了 errorPtr 输出错误信息):
val errorPtr: ObjCObjectVar<NSError?> = alloc()
NSData.dataWithContentsOfFile(fullPath, options = 0, error = errorPtr.ptr)?.let { bytes ->
val array = ByteArray(bytes.length.toInt())
bytes.getBytes(array.refTo(0).getPointer(this), bytes.length)
return@withContext array
}
println(errorPtr.value?.description.orEmpty())
return@withContext null