Can't save records #303

Open
opened 2025-12-29 15:28:28 +01:00 by adam · 1 comment
Owner

Originally created by @pingus-nikalex on GitHub (Jan 9, 2020).

I will try to save records with type:

Here is model:

import UIKit
import CoreData

class WindEntity: NSManagedObject {
@NSManaged var wind_id:String
@NSManaged var latitude:Double
@NSManaged var longitude:Double

func setInitialValues() {
    self.latitude = Double(arc4random_uniform(180)) - 90
    self.longitude = Double(arc4random_uniform(360)) - 180
    self.wind_id = NSUUID().uuidString.lowercased()
}

var coordinate: CLLocationCoordinate2D {
    get {
        
        return CLLocationCoordinate2DMake(
            self.latitude,
            self.longitude
        )
    }
    set {
        
        self.latitude = newValue.latitude
        self.longitude = newValue.longitude
    }
}

}

Save code:

class DBManager: NSObject {

static let sharedManager = DBManager()

let dataStack = DataStack(xcodeModelName: "Hunt")

private override init() {
    super.init()
    let migrationProgress = dataStack.addStorage(
        SQLiteStore(
            fileName: "Hunt.sqlite",
            configuration: "Default",
            localStorageOptions: .recreateStoreOnModelMismatch // optional. Provides settings that tells the DataStack how to setup the persistent store
        ),
        completion: { (result) -> Void in
            switch result {
            case .success(let storage):
                print("Successfully added sqlite store: \(storage)")
            case .failure(let error):
                print("Failed adding sqlite store with error: \(error)")
            }
        }
    )
    CoreStoreDefaults.dataStack = dataStack
  }

func saveWindModel(weather:WeatherModel) {
    dataStack.perform(
        asynchronous: { (transaction) -> Void in
            let wind = transaction.create(Into<WindEntity>())
            wind.setInitialValues()
            wind.coordinate = weather.location!.coordinate
            
            print("wind: \(wind) isUpdated \(wind.isUpdated)")
        },
        completion: { (result) -> Void in
            switch result {

            case .success:
                let people = try! self.dataStack.fetchAll(From<WindEntity>())
                print("people \(people)")
                
            case .failure(let error): print(error)
                
            }
        }
    )
}

}

After saving I will try to fetch items and have data: )

wind: <Hunt.WindEntity: 0x600001f047d0> (entity: WindEntity; id: 0x600003f9c840 x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/tC3C3F593-3CF5-4E41-B791-9C652B8CFDD42; data: {
latitude = "50.48147854721918";
longitude = "43.66070977143403";
"wind_id" = "3f6562d4-d92a-4f05-af28-6953a8eaaf21";
}) isUpdated false
people [<Hunt.WindEntity: 0x600001f3c820> (entity: WindEntity; id: 0x865fe1853c3e059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p7; data: ), <Hunt.WindEntity: 0x600001f3ca50> (entity: WindEntity; id: 0x865fe1853c02059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p8; data: ), <Hunt.WindEntity: 0x600001f3cdc0> (entity: WindEntity; id: 0x865fe1853c06059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p9; data: ), <Hunt.WindEntity: 0x600001f3cd20> (entity: WindEntity; id: 0x865fe1853c0a059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p10; data: ), <Hunt.WindEntity: 0x600001f3cbe0> (entity: WindEntity; id: 0x865fe1853c0e059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p11; data: ), <Hunt.WindEntity: 0x600001f3ceb0> (entity: WindEntity; id: 0x865fe1853c12059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p12; data: ), <Hunt.WindEntity: 0x600001f3cf00> (entity: WindEntity; id: 0x865fe1853c16059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p13; data: ), <Hunt.WindEntity: 0x600001f3cf50> (entity: WindEntity; id: 0x865fe1853c1a059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p14; data: ), <Hunt.WindEntity: 0x600001f3cfa0> (entity: WindEntity; id: 0x865fe1853c1e059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p15; data: ), <Hunt.WindEntity: 0x600001f3cff0> (entity: WindEntity; id: 0x865fe1853c62059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p16; data: ), <Hunt.WindEntity: 0x600001f3d040> (entity: WindEntity; id: 0x865fe1853c66059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p17; data: ), <Hunt.WindEntity: 0x600001f3d090> (entity: WindEntity; id: 0x865fe1853c6a059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p18; data: ), <Hunt.WindEntity: 0x600001f3d0e0> (entity: WindEntity; id: 0x865fe1853c6e059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p19; data: ), <Hunt.WindEntity: 0x600001f3d130> (entity: WindEntity; id: 0x865fe1853c72059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p20; data: ), <Hunt.WindEntity: 0x600001f3d180> (entity: WindEntity; id: 0x865fe1853c76059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p21; data: ), <Hunt.WindEntity: 0x600001f3d1d0> (entity: WindEntity; id: 0x865fe1853c7a059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p22; data: ), <Hunt.WindEntity: 0x600001f3d220> (entity: WindEntity; id: 0x865fe1853c7e059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p23; data: ), <Hunt.WindEntity: 0x600001f3d270> (entity: WindEntity; id: 0x865fe1853c42059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p24; data: )]

What I do wrong?

Originally created by @pingus-nikalex on GitHub (Jan 9, 2020). I will try to save records with type: Here is model: import UIKit import CoreData class WindEntity: NSManagedObject { @NSManaged var wind_id:String @NSManaged var latitude:Double @NSManaged var longitude:Double func setInitialValues() { self.latitude = Double(arc4random_uniform(180)) - 90 self.longitude = Double(arc4random_uniform(360)) - 180 self.wind_id = NSUUID().uuidString.lowercased() } var coordinate: CLLocationCoordinate2D { get { return CLLocationCoordinate2DMake( self.latitude, self.longitude ) } set { self.latitude = newValue.latitude self.longitude = newValue.longitude } } } Save code: class DBManager: NSObject { static let sharedManager = DBManager() let dataStack = DataStack(xcodeModelName: "Hunt") private override init() { super.init() let migrationProgress = dataStack.addStorage( SQLiteStore( fileName: "Hunt.sqlite", configuration: "Default", localStorageOptions: .recreateStoreOnModelMismatch // optional. Provides settings that tells the DataStack how to setup the persistent store ), completion: { (result) -> Void in switch result { case .success(let storage): print("Successfully added sqlite store: \(storage)") case .failure(let error): print("Failed adding sqlite store with error: \(error)") } } ) CoreStoreDefaults.dataStack = dataStack } func saveWindModel(weather:WeatherModel) { dataStack.perform( asynchronous: { (transaction) -> Void in let wind = transaction.create(Into<WindEntity>()) wind.setInitialValues() wind.coordinate = weather.location!.coordinate print("wind: \(wind) isUpdated \(wind.isUpdated)") }, completion: { (result) -> Void in switch result { case .success: let people = try! self.dataStack.fetchAll(From<WindEntity>()) print("people \(people)") case .failure(let error): print(error) } } ) } } After saving I will try to fetch items and have data: <fault>) wind: <Hunt.WindEntity: 0x600001f047d0> (entity: WindEntity; id: 0x600003f9c840 <x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/tC3C3F593-3CF5-4E41-B791-9C652B8CFDD42>; data: { latitude = "50.48147854721918"; longitude = "43.66070977143403"; "wind_id" = "3f6562d4-d92a-4f05-af28-6953a8eaaf21"; }) isUpdated false people [<Hunt.WindEntity: 0x600001f3c820> (entity: WindEntity; id: 0x865fe1853c3e059b <x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p7>; data: <fault>), <Hunt.WindEntity: 0x600001f3ca50> (entity: WindEntity; id: 0x865fe1853c02059b <x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p8>; data: <fault>), <Hunt.WindEntity: 0x600001f3cdc0> (entity: WindEntity; id: 0x865fe1853c06059b <x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p9>; data: <fault>), <Hunt.WindEntity: 0x600001f3cd20> (entity: WindEntity; id: 0x865fe1853c0a059b <x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p10>; data: <fault>), <Hunt.WindEntity: 0x600001f3cbe0> (entity: WindEntity; id: 0x865fe1853c0e059b <x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p11>; data: <fault>), <Hunt.WindEntity: 0x600001f3ceb0> (entity: WindEntity; id: 0x865fe1853c12059b <x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p12>; data: <fault>), <Hunt.WindEntity: 0x600001f3cf00> (entity: WindEntity; id: 0x865fe1853c16059b <x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p13>; data: <fault>), <Hunt.WindEntity: 0x600001f3cf50> (entity: WindEntity; id: 0x865fe1853c1a059b <x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p14>; data: <fault>), <Hunt.WindEntity: 0x600001f3cfa0> (entity: WindEntity; id: 0x865fe1853c1e059b <x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p15>; data: <fault>), <Hunt.WindEntity: 0x600001f3cff0> (entity: WindEntity; id: 0x865fe1853c62059b <x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p16>; data: <fault>), <Hunt.WindEntity: 0x600001f3d040> (entity: WindEntity; id: 0x865fe1853c66059b <x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p17>; data: <fault>), <Hunt.WindEntity: 0x600001f3d090> (entity: WindEntity; id: 0x865fe1853c6a059b <x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p18>; data: <fault>), <Hunt.WindEntity: 0x600001f3d0e0> (entity: WindEntity; id: 0x865fe1853c6e059b <x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p19>; data: <fault>), <Hunt.WindEntity: 0x600001f3d130> (entity: WindEntity; id: 0x865fe1853c72059b <x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p20>; data: <fault>), <Hunt.WindEntity: 0x600001f3d180> (entity: WindEntity; id: 0x865fe1853c76059b <x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p21>; data: <fault>), <Hunt.WindEntity: 0x600001f3d1d0> (entity: WindEntity; id: 0x865fe1853c7a059b <x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p22>; data: <fault>), <Hunt.WindEntity: 0x600001f3d220> (entity: WindEntity; id: 0x865fe1853c7e059b <x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p23>; data: <fault>), <Hunt.WindEntity: 0x600001f3d270> (entity: WindEntity; id: 0x865fe1853c42059b <x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p24>; data: <fault>)] What I do wrong?
adam added the question label 2025-12-29 15:28:28 +01:00
Author
Owner

@JohnEstropia commented on GitHub (Jan 9, 2020):

I'm not sure what the problem is. Your logs seem to show that
print("people \(people)")
is properly displaying the objects you created:

people [<Hunt.WindEntity: 0x600001f3c820> (entity: WindEntity; id: 0x865fe1853c3e059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p7; data: ), <Hunt.WindEntity: 0x600001f3ca50> (entity: WindEntity; id: 0x865fe1853c02059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p8; data: ), <Hunt.WindEntity: 0x600001f3cdc0> (entity: WindEntity; id: 0x865fe1853c06059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p9; data: ), <Hunt.WindEntity: 0x600001f3cd20> (entity: WindEntity; id: 0x865fe1853c0a059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p10; data: ), <Hunt.WindEntity: 0x600001f3cbe0> (entity: WindEntity; id: 0x865fe1853c0e059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p11; data: ), <Hunt.WindEntity: 0x600001f3ceb0> (entity: WindEntity; id: 0x865fe1853c12059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p12; data: ), <Hunt.WindEntity: 0x600001f3cf00> (entity: WindEntity; id: 0x865fe1853c16059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p13; data: ), <Hunt.WindEntity: 0x600001f3cf50> (entity: WindEntity; id: 0x865fe1853c1a059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p14; data: ), <Hunt.WindEntity: 0x600001f3cfa0> (entity: WindEntity; id: 0x865fe1853c1e059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p15; data: ), <Hunt.WindEntity: 0x600001f3cff0> (entity: WindEntity; id: 0x865fe1853c62059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p16; data: ), <Hunt.WindEntity: 0x600001f3d040> (entity: WindEntity; id: 0x865fe1853c66059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p17; data: ), <Hunt.WindEntity: 0x600001f3d090> (entity: WindEntity; id: 0x865fe1853c6a059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p18; data: ), <Hunt.WindEntity: 0x600001f3d0e0> (entity: WindEntity; id: 0x865fe1853c6e059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p19; data: ), <Hunt.WindEntity: 0x600001f3d130> (entity: WindEntity; id: 0x865fe1853c72059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p20; data: ), <Hunt.WindEntity: 0x600001f3d180> (entity: WindEntity; id: 0x865fe1853c76059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p21; data: ), <Hunt.WindEntity: 0x600001f3d1d0> (entity: WindEntity; id: 0x865fe1853c7a059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p22; data: ), <Hunt.WindEntity: 0x600001f3d220> (entity: WindEntity; id: 0x865fe1853c7e059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p23; data: ), <Hunt.WindEntity: 0x600001f3d270> (entity: WindEntity; id: 0x865fe1853c42059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p24; data: )]

@JohnEstropia commented on GitHub (Jan 9, 2020): I'm not sure what the problem is. Your logs seem to show that `print("people \(people)")` is properly displaying the objects you created: > people [<Hunt.WindEntity: 0x600001f3c820> (entity: WindEntity; id: 0x865fe1853c3e059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p7; data: ), <Hunt.WindEntity: 0x600001f3ca50> (entity: WindEntity; id: 0x865fe1853c02059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p8; data: ), <Hunt.WindEntity: 0x600001f3cdc0> (entity: WindEntity; id: 0x865fe1853c06059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p9; data: ), <Hunt.WindEntity: 0x600001f3cd20> (entity: WindEntity; id: 0x865fe1853c0a059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p10; data: ), <Hunt.WindEntity: 0x600001f3cbe0> (entity: WindEntity; id: 0x865fe1853c0e059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p11; data: ), <Hunt.WindEntity: 0x600001f3ceb0> (entity: WindEntity; id: 0x865fe1853c12059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p12; data: ), <Hunt.WindEntity: 0x600001f3cf00> (entity: WindEntity; id: 0x865fe1853c16059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p13; data: ), <Hunt.WindEntity: 0x600001f3cf50> (entity: WindEntity; id: 0x865fe1853c1a059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p14; data: ), <Hunt.WindEntity: 0x600001f3cfa0> (entity: WindEntity; id: 0x865fe1853c1e059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p15; data: ), <Hunt.WindEntity: 0x600001f3cff0> (entity: WindEntity; id: 0x865fe1853c62059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p16; data: ), <Hunt.WindEntity: 0x600001f3d040> (entity: WindEntity; id: 0x865fe1853c66059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p17; data: ), <Hunt.WindEntity: 0x600001f3d090> (entity: WindEntity; id: 0x865fe1853c6a059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p18; data: ), <Hunt.WindEntity: 0x600001f3d0e0> (entity: WindEntity; id: 0x865fe1853c6e059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p19; data: ), <Hunt.WindEntity: 0x600001f3d130> (entity: WindEntity; id: 0x865fe1853c72059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p20; data: ), <Hunt.WindEntity: 0x600001f3d180> (entity: WindEntity; id: 0x865fe1853c76059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p21; data: ), <Hunt.WindEntity: 0x600001f3d1d0> (entity: WindEntity; id: 0x865fe1853c7a059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p22; data: ), <Hunt.WindEntity: 0x600001f3d220> (entity: WindEntity; id: 0x865fe1853c7e059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p23; data: ), <Hunt.WindEntity: 0x600001f3d270> (entity: WindEntity; id: 0x865fe1853c42059b x-coredata://E6238499-1013-4BAC-A8A9-460447C25A79/WindEntity/p24; data: )]
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/CoreStore#303