나는 User.updateMyObject(id: NSNumber, name: String)
메서드를 호출하는 NSUrlRequest가 있습니다. 개체/삭제/업데이트 만들기위한핵심 데이터 : NSUrlRequest 내에서 업데이트하는 올바른 방법
static let appDelegate = UIApplication.shared.delegate as! AppDelegate
static let MOC = appDelegate.managedObjectContext
그리고 여러 가지 방법 : 개체 User
정적 속성이 있습니다.
이제 다른 스레드에서 MOC
을 사용하면 안된다는 내용을 읽었습니다. 그리고 지금까지 NSUrlRequest가 비동기 적으로 실행된다는 것을 알고 있습니다. 그러면 어떻게하면 MyObject.updateMyObject(id: NSNumber, name: String)
에 전화할까요?
:
CoreData: error: Serious application error. Exception was caught during Core Data change processing. This is usually a bug within an observer of NSManagedObjectContextObjectsDidChangeNotification. -[__NSCFSet addObject:]: attempt to insert nil with userInfo (null)
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFSet addObject:]: attempt to insert nil'
내 요청은 다음과 같습니다
let session = URLSession.shared
// The singleton shared session is for basic requests.
// Data tasks send and receive data using NSData objects.
// Data tasks are intended for short, often interactive requests to a server.
let task = session.dataTask(with: request) {
(data: Data?, response: URLResponse?, error: Error?) in
//JSon parsing
MyObject.updateMyObject(id: NSNumber, name: String)
}
task.resume()
MyObject.updateMyObject(id: NSNumber, name: String)
static func updateMyObject(id: NSNumber, name: String) {
let request: NSFetchRequest<NSFetchRequestResult> = NSFetchRequest(entityName: "MyObject")
let resultPredicate = NSPredicate(format: "id = \(id)")
request.predicate = resultPredicate
do {
let result = try User.MOC.fetch(request).first as! MyObject
result.name = name
User.appDelegate.saveContext()
}
catch {
print("User.updateMyObject: error.")
}
}
답변을 주셔서 감사합니다. 많은 감사드립니다. 예를 들어 주시겠습니까? 요청의 일부를 파싱하는 JSON 내부에 추가해야하는지 잘 모르겠습니까? – Frederik
@FrederikNorlykEriksen 세부 사항 추가 –