Jim*_*b76 4 image exc-bad-access list swift
我将系统驱动器图标 (NSImage) 添加到我的驱动器列表中
现在应用程序在 AppDelegate.swift 的第 13 行崩溃
class AppDelegate: NSObject, NSApplicationDelegate {
了
Thread 1: EXC_BAD_ACCESS (code=2, address=0x7ffeef3fff48)
我知道这是我添加的图像,因为当我用文本替换它时就可以了
这是我添加图像的类。
import SwiftUI
let workspace = NSWorkspace.init()
struct DriveList: View {
let drives = SDCardTools.getDrives()!
var body: some View {
return List(drives) { drive in
DriveRow(drive : drive)
}
}
}
struct DriveRow: View {
var drive : Drive
var body: some View {
HStack {
DriveIcon(path : drive.path)
padding(10)
Text(drive.name)
}
}
}
struct DriveIcon : View {
var path: String
var body: some View {
Image(nsImage: workspace.icon(forFile: path ))
.resizable()
.frame(width: 50, height: 50)
}
}
struct DriveList_Previews: PreviewProvider {
static var previews: some View {
DriveList()
}
}
Run Code Online (Sandbox Code Playgroud)
线程1队列:com.apple.main-thread(串行)#0 0x00007fff44382883在专门的静态EnvironmentReadingView._makeView(view:inputs :)()#1 0x00007fff44384668在静态View._makeView(view:inputs :)的协议见证中保持一致Image () #2 0x00007fff44384610 静态 View._makeView(view:inputs:) 协议见证中的 Image () #3 0x00007fff441c20e9 TypedUnaryViewGenerator.makeView(in:inputs:id:indirectMap:) () #4 0x00007fff441c21f9 协议见证for UnaryViewGenerator.makeView(in:inputs:id:indirectMap:) 符合 TypedUnaryViewGenerator () #5 0x00007fff441bc9b0 闭包 #1 UnaryElements.makeElements(from:in:inputs:indirectMap:body:) () #6 0x00007fff441c4801 部分应用for UnaryElements.makeElements(from:in:inputs:indirectMap:body:) () #7 0x00007fff441bf61b 闭包 #1 中的闭包 #1 闭包 #1 中的闭包 #1 闭包 #1 中的 ModifiedElements.makeElements(from:in: input:indirectMap:body:) () #8 0x00007fff441ce4c5 部分适用于闭包 #1 闭包 #1 闭包 #1 闭包 #1 in ModifiedElements.makeElements(from:in:inputs:indirectMap:body:) () # 9 0x00007fff445adb15 在专门的静态 UnaryLayout<>.makeViewImpl(modifier:inputs:body:) () #10 0x00007fff4430e339 在专门的静态 UnaryLayout._makeView(modifier:inputs:body:) () #11 0x00007fff4430f101 在静态 ViewModifier._makeView 的协议见证中(modifier:inputs:body:) 符合 _AspectRatioLayout () #12 0x00007fff4430eec8 静态 ViewModifier._makeView(modifier:inputs:body:) 符合 _FrameLayout () #13 0x00007fff441bf2a5 闭包 #1 闭包 #1 协议见证ModifiedElements.makeElements(from:in:inputs:indirectMap:body:) () 中的 #1 部分申请闭包中的 #1 0x00007fff441ce43d 闭包中的 #1 ModifiedElements.makeElements(from:in:inputs:indirectMap 中的闭包中的 #1 :body:) () #15 0x00007fff441813ef 在 static _Layout<>.makeStaticView(root:inputs:list:) () 中的闭包 #2 中
如果您能提供任何帮助,我们将不胜感激:)
Asp*_*eri 11
该错误非常令人困惑,这是由于padding修饰符不可剥夺的性质......并且编译器传递它而不将其用作实际修饰符,这导致崩溃。
这是修复
struct DriveRow: View {
var drive : Drive
var body: some View {
HStack {
DriveIcon(path : drive.path)
.padding(10) // << in this line you missed '.' dot
Text(drive.name)
}
}
}
Run Code Online (Sandbox Code Playgroud)