【问题标题】:Thread 1: EXC_BAD_ACCESS (code=2, address=0x7ffee0948ff8) while launch app in SwiftUI线程 1:EXC_BAD_ACCESS (code=2, address=0x7ffee0948ff8) 在 SwiftUI 中启动应用程序时
【发布时间】:2021-05-29 00:10:53
【问题描述】:

我遇到项目崩溃的问题,但控制台中没有显示任何内容。线程 1:EXC_BAD_ACCESS(代码=2,地址=0x7ffee0948ff8) 我已经搜索并尝试了很多方法来尝试解决此问题。

class getPhotosData: ObservableObject {
    @Published var Images : [[Photos]] = []
    @Published var noresults = false
    
    @ObservedObject var RandomImages = getPhotosData()
    
    init() {
        updateData()
    }
    
    func updateData() {
        self.noresults = false
        
        let key = ""
        let url = "https://api.unsplash.com/photos/random/?client_id=\(key)"
        
        let session = URLSession(configuration: .default)
        
        session.dataTask(with: URL(string: url)!) { data, _, err in
            if err != nil {
                print((err?.localizedDescription)!)
                return
            }
            
            do {
                let json = try JSONDecoder().decode([Photos].self, from: data!)
                for i in stride(from: 0, to: json.count, by: 2) {
                    
                    var ArrayData: [Photos] = []
                    
                    print(json)
                    for j in i..<i + 2 {
                        if j < json.count {
                            ArrayData.append(json[j])
                        }
                    }
                    DispatchQueue.main.async {
                        self.Images.append(ArrayData)
                    }
                }
            }
            catch {
                print(error.localizedDescription)
            }
        }
        .resume()
    }

这是我的代码,崩溃发生在这一行: @Published var 图片:[[照片]] = []

我已经删除了私钥

【问题讨论】:

标签: ios swift xcode swiftui


【解决方案1】:

您可以尝试将DispatchQueue.main.async { 部分从外部 for 循环中取出

var all: [Photos] = []
for i in stride(from: 0, to: json.count, by: 2) {  
    var arrayData: [Photos] = [] 
    print(json)
    for j in i..<i + 2 {
        if j < json.count {
            arrayData.append(json[j])
        }
    }
    all.append(arrayData)
}
DispatchQueue.main.async {
   self.images = all
}

【讨论】:

    猜你喜欢
    • 2014-09-19
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多