I am trying to save a random number with current date in core data. But the number is getting over written. Here is my code :
func saveRandNumbers (number : Int){
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
return
}
let date = Date();
let managedContext = appDelegate.persistentContainer.viewContext;
let entity = NSEntityDescription.entity(forEntityName: "RandNumbers", in: managedContext);
let randNumbers = NSManagedObject(entity: entity!, insertInto : managedContext);
randNumbers.setValue(number , forKeyPath : "randNumber");
randNumbers.setValue(date , forKeyPath : "time");
do{
try managedContext.save()
}catch let error as NSError{
print("Could not save\(error)");
}
}
This is how I am testing it for demo. In viewDidLoad()
I call that function with two diff values :
saveRandNumbers (number : 3)
saveRandNumbers (number : 4)
Code to fetch the data :
func fetchRandNumbers (){
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
return
}
let managedContect = appDelegate.persistentContainer.viewContext;
let fetchRequest = NSFetchRequest<NSManagedObject>(entityName : "RandNumbers")
do{
RandNumbers = try managedContect.fetch(fetchRequest)
print("Result :\(RandNumbers)")
}catch let error as NSError{
print("Could not fetch \(error)");
}
}
Output:
[<RandNumbers: 0x608000099690> (entity: RandNumbers; id: 0xd000000000040000 <x-coredata://B35EDED6-9C24-45E7-8F05-D2CB5F5FE4BA/RandNumbers/p1> ; data: <fault>), <RandNumbers: 0x60800009a400> (entity: RandNumbers; id: 0xd000000000080000 <x-coredata://B35EDED6-9C24-45E7-8F05-D2CB5F5FE4BA/RandNumbers/p2> ; data: <fault>), <RandNumbers: 0x60800009ac70> (entity: RandNumbers; id: 0xd0000000000c0000 <x-coredata://B35EDED6-9C24-45E7-8F05-D2CB5F5FE4BA/RandNumbers/p3> ; data: <fault>), <RandNumbers: 0x60800009acc0> (entity: RandNumbers; id: 0xd000000000100000 <x-coredata://B35EDED6-9C24-45E7-8F05-D2CB5F5FE4BA/RandNumbers/p4> ; data: <fault>), <RandNumbers: 0x60800009adb0> (entity: RandNumbers; id: 0xd000000000140000 <x-coredata://B35EDED6-9C24-45E7-8F05-D2CB5F5FE4BA/RandNumbers/p5> ; data: <fault>), <RandNumbers: 0x60000009d470> (entity: RandNumbers; id: 0xd000000000180000 <x-coredata://B35EDED6-9C24-45E7-8F05-D2CB5F5FE4BA/RandNumbers/p6> ; data: {
randNumber = 4;
time = nil;
})]
And when i print the result i only get 2nd value. Any help would be appreciated. Thanks.