我是一名初学者程序员,正在使用运行在 iMac Big Sur 11.2上的 Xcode 12.4,我的项目类型是“多平台应用”。
我正在尝试创建一个图像数组以在网格中移动。我将“My Image.png”复制到了 Xcode 项目中,并成功使用了它,但无论我如何尝试将它放入数组中,它都返回一个空数组。我在另一台电脑上尝试过,似乎可以工作。Xcode 中可能有什么影响吗?(还是我在另一台机器上幻想它可以工作了? :-p)
代码:
@State var stringURL: URL = Bundle.main.url(forResource: "My Image", withExtension: "png")!
Image(nsImage: NSImage(byReferencing: stringURL))
@State var arrayURLs = [URL]()
arrayURLs.append(Bundle.main.url(forResource: "My Image", withExtension: "png")!)
Image(nsImage: NSImage(byReferencing: arrayURLs[0]))
第一和第二行可以正常运行,但最后三行在同一个应用程序中失败。我收到了“索引超出范围”的运行时错误,我认为这是因为bundle调用返回了nil。
上下文基本相同。我刚开始这个项目,从未超过前几行......
import SwiftUI
struct ContentView: View {
@State var pieceImageURLs = [URL]()
init() {
self.pieceImageURLs.append(Bundle.main.url(forResource: "Red Warrior", withExtension: "png")!)
}
var body: some View {
HStack {
Image(nsImage: NSImage(byReferencing: pieceImageURLs[0]))
}
}}
import SwiftUI
struct ContentView: View {
@State var stringURL: URL = Bundle.main.url(forResource: "My Image", withExtension: "png")!
@State var arrayURLs = [URL]()
init() {
stringURL = Bundle.main.url(forResource: "My Image", withExtension: "png")!
arrayURLs.append(Bundle.main.url(forResource: "My Image", withExtension: "png")!)
}
var body: some View {
HStack {
Image(nsImage: NSImage(byReferencing: stringURL))
Image(nsImage: NSImage(byReferencing: arrayURLs[0]))
}
Button(action: {
arrayURLs.append(Bundle.main.url(forResource: "My Image", withExtension: "png")!)
Image(nsImage: NSImage(byReferencing: arrayURLs[0]))
}) {
Text("add image")
}
}
}
或者像这样全部一起,无论是图像行还是数组,都会失败。