0
CKRecordID를 NSUserDefaults에 저장하려고합니다. 그것을 원래의 타입으로 되돌릴 수 있나요? NSData가 아닌 그것을 검색 할 때 CKRecordID로 되돌릴 수 있습니까? 이런 식으로 NSKeyArchiver를 사용할 수 있습니까? 아니면 다른 방법이 있습니까? 당신이 recordID
처음 저장 한 후문제 Swift 3에서 원래 유형의 NSData 보관 해제
func getRecordToUpdate(_ locations:CLLocation)
{
if defaults1.object(forKey: "locationData") == nil{
locationRecord.setObject(locations, forKey: "location")
let id = locationRecord.recordID
let dataId = NSKeyedArchiver.archivedData(withRootObject: id)
defaults1.set(dataId, forKey: "locationData")
self.updateLocationRecord(locations: locations)
}else{
if let loadedData = defaults1.object(forKey: "locationData") {
if (NSKeyedUnarchiver.unarchiveObject(with: loadedData as! Data)) != nil
{
let publicDB = CKContainer.default().publicCloudDatabase
let lit = NSKeyedUnarchiver.unarchiveObjectWithData(loadedData as! CKRecordID)
publicDB.fetch(withRecordID: lit ,completionHandler: {
(record, error) in
if error == nil
{
publicDB.delete(withRecordID: (record?.recordID)!, completionHandler: {
(record, error) in
if(error == nil){
print("old record delete")
let id = self.locationRecord.recordID.recordName
self.locationRecord.setObject(locations, forKey: "location")
self.defaults1.set(id, forKey: "locationData")
self.updateLocationRecord(locations: locations)
}
else{
}
})
}else{
print("Error fetching previous record")
}
})
}
}
}
}