Fetching remote data with core data background context

113 views Asked by At

I'm new to programming and I apologize in advance if my code makes no sense. I am completely lost with trying to fetch some json using an HTTP request and load it into Core Data. I was hoping someone might be able to provide some insight into the mistakes I have made... running this code causes an immediate crash.

Please let me know if I should provide further information. Thanks for reading.

class DataProvider {
    let persistentContainer: NSPersistentContainer
    var users: [User]? = []
    
    
    func loadData() {
        let url = URL(string: "https://www.hackingwithswift.com/samples/friendface.json")!
        var request = URLRequest(url: url)
        request.addValue("application/json", forHTTPHeaderField: "Content-Type")
        request.httpMethod = "GET"
        URLSession.shared.dataTask(with: request) { data, response, error in
            if let data = data {
                self.persistentContainer.performBackgroundTask { context in
                    let decoder = JSONDecoder()
                    decoder.userInfo[CodingUserInfoKey.managedObjectContext] = context
                    if (try?
                            decoder.decode([User].self, from: data)) != nil {
                        context.perform {
                            let fetchRequest : NSFetchRequest<User> = User.fetchRequest()
                            self.users = try? context.fetch(fetchRequest)
                        }
                    }
                }
            }
        }.resume()
    }
    init(container: NSPersistentContainer) {
        self.persistentContainer = container
    }
}
0

There are 0 answers