问题描述
我在驱动器列表中添加了系统驱动器图标(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()
}
}
线程1队列:com.apple.main-thread(串行) #0 0x00007fff44382883在专门的静态EnvironmentReadingView._makeView(view:inputs :)() #1 0x00007fff44384668在协议见证中用于静态View._makeView(view:inputs :)一致性图像() #2 0x00007fff44384610在协议见证中用于静态View._makeView(view:inputs :)一致性图像() #3 0x00007fff441c20e9 in TypedUnaryViewGenerator.makeView(in:inputs:id:indirectMap :)() UnaryViewGenerator.makeView(in:inputs:id:indirectMap :)的协议见证中的#4 0x00007fff441c21f9符合TypedUnaryViewGenerator() #5 0x00007fff441bc9b0在UnaryElements.makeElements中的闭包#1中(from:in:inputs:indirectMap:body :)() #6 0x00007fff441c4801部分申请UnaryElements.makeElements中的封闭#1(from:in:inputs:indirectMap:body :)() #7 0x00007fff441bf61b在闭包中#1在闭包中#1在闭包中#1在闭包中#1在ModifiedElements.makeElements(来自:in:inputs:indirectMap:body :)() #8 0x00007fff441ce4c5部分申请闭包#1闭包#1闭包#1闭包#1的ModifiedElements.makeElements(from:in:inputs:indirectMap:body :)() #9 0x00007fff445adb15在专门的静态UnaryLayout 。makeViewImpl(modifier:inputs:body :)()中 #10 0x00007fff4430e339在专门的静态UnaryLayout._makeView(modifier:inputs:body :)() 协议见证中的#11 0x00007fff4430f101符合_AspectRatioLayout()的静态ViewModifier._makeView(modifier:inputs:body :) #12 0x00007fff4430eec8在协议见证中用于静态ViewModifier._makeView(modifier:inputs:body :)符合_FrameLayout() #13 0x00007fff441bf2a5在封闭中#1在封闭中#1在封闭中#1在ModifiedElements.makeElements(来自:in:inputs:indirectMap:body :)() #14 0x00007fff441ce43d部分申请ModifiedElements.makeElements中的封闭#1中的封闭#1中的封闭#1(from:in:inputs:indirectMap:body :)() #15 0x00007fff441813ef在静态_Layout 。makeStaticView(root:inputs:list :)()中的闭包#2中
感谢您能提供的任何帮助:)
解决方法
该错误非常令人困惑,这是由于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)
}
}
}