Swift中如何访问内部Framework中的JSON文件?
Swift内部Framework中访问JSON文件返回nil的解决方法
以下是几个排查和解决的关键点:
确认文件已加入Framework构建目标
打开Xcode,选中你的AVStream Framework目标,进入Build Phases标签,检查Copy Bundle Resources列表里是否包含RemoteVideos.json。如果没添加,点击+按钮把文件加进去,否则文件不会被打包到Framework的bundle中,必然获取不到URL。简化Bundle获取逻辑
你当前的Bundle扩展存在冗余调用,直接通过标记类获取Framework的bundle更简洁可靠。修改后的扩展代码如下:// Bundle+Ext.swift // AVStream private final class AVStreamMarker { } extension Bundle { static var avstream: Bundle { Bundle(for: AVStreamMarker.self) } }用独立的标记类
AVStreamMarker可以避免和项目中其他同名类产生冲突。核对文件名的准确性
确保代码中使用的文件名和实际文件完全一致,包括大小写(比如不要把RemoteVideos写成remoteVideos)、扩展名(确认是json而不是JSON或其他拼写)。备选路径获取方式
如果上述方法都无效,可以尝试先获取文件路径再转换为URL:guard let filePath = Bundle.avstream.path(forResource: "RemoteVideos", ofType: "json"), let fileUrl = URL(fileURLWithPath: filePath) else { return }
内容的提问来源于stack exchange,提问作者Milton Palaguachi
相关产品推荐
相关产品推荐

