ios - SwiftUI - AsyncImage 导致大量 tmp 文件夹?
问题描述
所以我有一个令人困惑的情况。我正在AsyncImage
根据规范加载多个 SwiftUI (参见下面的代码)。出于某种原因,我的 1MB 应用程序包含超过 400 MB 的文档和数据。当我查看应用程序的容器时,我可以看到它是由“tmp”文件夹中大量以“CFNetworkDownload”开头的图像作为.tmp 文件引起的。似乎每次加载图像时,它都存储在此处,但不会删除。这使得应用程序每次打开时都会变大。对于这个问题我能做些什么?非常感谢!(PS 为了便于阅读,我试图尽可能地压缩我的代码,但是由于我不确定问题出在哪里,所以包含了一些文件。)
主应用 Swift 文件:
@main
struct MyApp: App {
let monitor = NWPathMonitor()
@State private var isConnected = true
var body: some Scene {
monitor.pathUpdateHandler = { path in
if path.status == .satisfied {
if !isConnected {
isConnected.toggle()
}
}
else {
if isConnected {
isConnected.toggle()
}
}
}
let queue = DispatchQueue(label: "Monitor")
monitor.start(queue: queue)
return WindowGroup {
isConnected ? AnyView(ContentView()) : AnyView(ContentViewFailed())
}
}
}
ContentView
在上面的 WindowGroup 中加载的那个:
struct ContentView: View {
var body: some View {
TabView {
HomeView()
.tabItem {
Image(systemName: "house.fill")
Text("Home")
}
. . .
}
}
}
最后,HomeView
加载图像的位置:
struct HomeView: View {
var body: some View {
let urlString = "https://www.example.com/Home.json"
if let url = URL(string: urlString) {
if let data = try? Data(contentsOf: url) {
do {
items = try JSONDecoder().decode([Item].self, from: data)
}
catch {
print(error)
}
}
}
return NavigationView {
List {
ScrollView {
VStack(alignment: .leading) {
ZStack {
VStack(alignment: .leading) {
Spacer()
HStack {
AsyncImage(url: URL(string: "https://www.example.com/images/example.png")) { image in
image
.resizable()
.aspectRatio(contentMode: .fill)
.shadow(color: Color(red: 0, green: 0, blue: 0, opacity: 0.25), radius: 1)
} placeholder: {
ProgressView()
.progressViewStyle(.circular)
}
.frame(width: 202, height: 100)
}
. . .
}
}
}
}
}
}
}
}
我真的很感谢你的时间。不确定这是否只是AsyncImage
本身的错误。
解决方案
推荐阅读
- nginx - 获取静态文件的正确路径以通过 nginx 为它们提供服务
- javascript - javascript for 循环:问题
- javascript - React 组件在获取新数据之前渲染旧状态
- python - 在 Macbook 上运行 Anaconda 时使用终端命令
- javascript - 自动在 CPT 中添加分类
- azure-devops - 如何获取我的 Azure DevOps 发布管道以从 Azure 存储帐户获取工件
- amazon-web-services - Elastic Beanstalk 在环境变量更新时失败
- javascript - 如何根据最大值和最小值按时间戳顺序创建对象数组?
- excel - 从 IE 升级到 EDGE
- yii2 - Yii2 队列 TTR 属性不适用