다음 코드가 있습니다.NSBatchDeleteRequest를 삭제하고 개체에 다시 추가 할 수있게하는 방법
let workorderFetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Workorders")
let deleteWorkOrderRequest = NSBatchDeleteRequest(fetchRequest: workorderFetchRequest) //Deletes ALL workorders
//Question is will it delete all references to the work orders correctly now?
try context.execute(deleteWorkOrderRequest)
//Save the work order objects (overwriting any old ones with same id if needed)
do {
try context.save()
print("Saved context with workorders")
} catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
} catch {
print("Could not save, unknown error")
}
print("deleted references")
의 workorders은 내가 이렇게 보이는 서비스 개체를 참조해야
import Foundation
import CoreData
extension Workorders {
@nonobjc public class func fetchRequest() -> NSFetchRequest<Workorders> {
return NSFetchRequest<Workorders>(entityName: "Workorders");
}
@NSManaged public var address: String?
@NSManaged public var client_id: Int64
@NSManaged public var desc: String?
@NSManaged public var id: Int64
@NSManaged public var phone: String?
@NSManaged public var signaturepath: String?
@NSManaged public var lat: String?
@NSManaged public var lng: String?
@NSManaged public var service: Service?
@NSManaged public var pictures: NSSet?
@NSManaged public var videos: NSSet?
}
// MARK: Generated accessors for pictures
extension Workorders {
@objc(addPicturesObject:)
@NSManaged public func addToPictures(_ value: Pictures)
@objc(removePicturesObject:)
@NSManaged public func removeFromPictures(_ value: Pictures)
@objc(addPictures:)
@NSManaged public func addToPictures(_ values: NSSet)
@objc(removePictures:)
@NSManaged public func removeFromPictures(_ values: NSSet)
}
// MARK: Generated accessors for videos
extension Workorders {
@objc(addVideosObject:)
@NSManaged public func addToVideos(_ value: Videos)
@objc(removeVideosObject:)
@NSManaged public func removeFromVideos(_ value: Videos)
@objc(addVideos:)
@NSManaged public func addToVideos(_ values: NSSet)
@objc(removeVideos:)
@NSManaged public func removeFromVideos(_ values: NSSet)
}
... ... 다음과 같습니다
import Foundation
import CoreData
extension Service {
@nonobjc public class func fetchRequest() -> NSFetchRequest<Service> {
return NSFetchRequest<Service>(entityName: "Service");
}
@NSManaged public var id: Int64
@NSManaged public var name: String?
@NSManaged public var templatedata: String?
@NSManaged public var workorder: Workorders?
}
내가 삭제 코드 I를 실행
작업 순서에 대한 모델이 으로 설정되어 있습니다. 삭제 규칙으로 무효화 ... (아래 이미지 참조)그러나 일괄 삭제를 실행하면 서비스가 올바르게 무효화되지 않는 것 같습니다. 나는 함께 ... 충돌합니다 workorder에 새로운 서비스를 설정하려고하면
의 libC++ abi.dylib : 유형의 캐치되지 않는 예외로 NSException
을 종료 나는이 사건 때문에 확신 작업 표시 줄에 계단식으로 삭제 규칙을 설정하면 문제가 해결됩니다. 그러나 이전 서비스가 참조를 무효로하는 것을 지키고 싶습니다.
작동하지 않는 서비스가 작동하지 않는 이유는 무엇입니까?
다음은 콘솔 메시지를보고 충돌하는 코드 영역입니다. 서비스를 설정하려고 시도 할 때까지 좁혔습니다. 또한
내가 다시 workorder에 동일한 ID 서비스를 설정하고자하기 때문에, 나는 NSMergeByPropertyObjectTrumpMergePolicy을 사용하고 있습니다, 그래서 같은 ID로 새로운 서비스를 만들 때 그냥 덮어 쓰기한다 내 이해가 맞으면 이전 서비스의 데이터. 이것이 문제가 될 수 있습니까? 그렇다면 어떻게 해결할 수 있습니까?