ios - array items not saved properly in core data entity -


i have problem last item of string array saved in required core data entity.

i have multi-dimensional array called "itemnames". flatmap array simple one-dimensional array iterate through it. loop creates every item newitem saved in core data entity "calc_values" in attribute "calc_item".

the console output newitem looks aspected.

however, when load core data entry entity "calc_values", receive console output 2. shows me last item, "item9" saves in according entity (cf. console output 2).

what have change code save items when iteration through array?

code (swift 3):

        let context = (uiapplication.shared.delegate as! appdelegate).persistentcontainer.viewcontext         var calc_values = [calc_values]()         let itemnames = [["item1", "item2", "item3", "item4", "item5"], ["item6", "item7", "item8", "item9"]]  //----------- save items -----------//                    // flat multidimensional array array         let flatitemnames = itemnames.flatmap({ $0 })          // save each item flatitemnames core data entity "calc_values" in attribute "calc_item":             itemname in flatitemnames {                 var newitem = nsentitydescription.insertnewobject (forentityname: "calc_values", into: context) nsmanagedobject                 newitem.setvalue(itemname, forkey: "calc_item")                 (uiapplication.shared.delegate as! appdelegate).savecontext()                  // checkpoint 1:  check newitem values                 print ("***this newitem: *** \(newitem)")                           }   //----------- load items -----------//            // checkpoint 2: check core data entry         let fetchrequest: nsfetchrequest<calc_values> = calc_values.fetchrequest()         {             if let results = try context.fetch(fetchrequest) as? [calc_values] {                 calc_values = results as! [calc_values]             }         } catch {print ("no results")}         print ("***this calc_values: *** \(calc_values)") 

console output checkpoint 1:

***this newitem: *** <startupkit.calc_values: 0x6080000ad4a0> (entity: calc_values; id: 0x608000232a00 <x-coredata:///calc_values/t02f40b3e-95d3-4692-b630-2aef16129a5f3> ; data: {     "calc_item" = "item1";     "calc_value" = 0; }) ***this newitem: *** <startupkit.calc_values: 0x6000000ac1e0> (entity: calc_values; id: 0x600000235320 <x-coredata:///calc_values/t02f40b3e-95d3-4692-b630-2aef16129a5f4> ; data: {     "calc_item" = "item2";     "calc_value" = 0; }) ***this newitem: *** <startupkit.calc_values: 0x6000000ab880> (entity: calc_values; id: 0x600000236c80 <x-coredata:///calc_values/t02f40b3e-95d3-4692-b630-2aef16129a5f5> ; data: {     "calc_item" = "item3";     "calc_value" = 0; })  ... 

console output checkpoint 2:

***this calc_values: *** [<startupkit.calc_values: 0x6000000aac20> (entity: calc_values; id: 0xd000000001f00000 <x-coredata://7687b389-1346-4c27-9b93-99b324fc28d2/calc_values/p124> ; data: <fault>), <startupkit.calc_values: 0x6000000aabc0> (entity: calc_values; id: 0xd000000001f40000 <x-coredata://7687b389-1346-4c27-9b93-99b324fc28d2/calc_values/p125> ; data: <fault>), <startupkit.calc_values: 0x6000000aab60> (entity: calc_values; id: 0xd000000001f80000 <x-coredata://7687b389-1346-4c27-9b93-99b324fc28d2/calc_values/p126> ; data: <fault>), <startupkit.calc_values: 0x6000000aab00> (entity: calc_values; id: 0xd000000001fc0000 <x-coredata://7687b389-1346-4c27-9b93-99b324fc28d2/calc_values/p127> ; data: <fault>), <startupkit.calc_values: 0x6000000aaaa0> (entity: calc_values; id: 0xd000000002000000 <x-coredata://7687b389-1346-4c27-9b93-99b324fc28d2/calc_values/p128> ; data: <fault>), <startupkit.calc_values: 0x6000000aaa40> (entity: calc_values; id: 0xd000000002040000 <x-coredata://7687b389-1346-4c27-9b93-99b324fc28d2/calc_values/p129> ; data: <fault>), <startupkit.calc_values: 0x6000000aa9e0> (entity: calc_values; id: 0xd000000002080000 <x-coredata://7687b389-1346-4c27-9b93-99b324fc28d2/calc_values/p130> ; data: <fault>), <startupkit.calc_values: 0x6000000aa980> (entity: calc_values; id: 0xd0000000020c0000 <x-coredata://7687b389-1346-4c27-9b93-99b324fc28d2/calc_values/p131> ; data: <fault>), <startupkit.calc_values: 0x6000000aa680> (entity: calc_values; id: 0xd000000002100000 <x-coredata://7687b389-1346-4c27-9b93-99b324fc28d2/calc_values/p132> ; data: <fault>), <startupkit.calc_values: 0x6000000aa5c0> (entity: calc_values; id: 0xd000000002140000 <x-coredata://7687b389-1346-4c27-9b93-99b324fc28d2/calc_values/p133> ; data: <fault>), <startupkit.calc_values: 0x6000000a9ea0> (entity: calc_values; id: 0xd000000002180000 <x-coredata://7687b389-1346-4c27-9b93-99b324fc28d2/calc_values/p134> ; data: <fault>), <startupkit.calc_values: 0x6000000a9d80> (entity: calc_values; id: 0xd0000000021c0000 <x-coredata://7687b389-1346-4c27-9b93-99b324fc28d2/calc_values/p135> ; data: <fault>), <startupkit.calc_values: 0x6000000a9de0> (entity: calc_values; id: 0xd000000002200000 <x-coredata://7687b389-1346-4c27-9b93-99b324fc28d2/calc_values/p136> ; data: <fault>), <startupkit.calc_values: 0x6000000a9cc0> (entity: calc_values; id: 0xd000000002240000 <x-coredata://7687b389-1346-4c27-9b93-99b324fc28d2/calc_values/p137> ; data: <fault>), <startupkit.calc_values: 0x6000000a99c0> (entity: calc_values; id: 0xd000000002280000 <x-coredata://7687b389-1346-4c27-9b93-99b324fc28d2/calc_values/p138> ; data: <fault>), <startupkit.calc_values: 0x6000000a9900> (entity: calc_values; id: 0xd0000000022c0000 <x-coredata://7687b389-1346-4c27-9b93-99b324fc28d2/calc_values/p139> ; data: <fault>), <startupkit.calc_values: 0x6000000a9240> (entity: calc_values; id: 0xd000000002300000 <x-coredata://7687b389-1346-4c27-9b93-99b324fc28d2/calc_values/p140> ; data: <fault>), <startupkit.calc_values: 0x6000000a9120> (entity: calc_values; id: 0xd000000002340000 <x-coredata://7687b389-1346-4c27-9b93-99b324fc28d2/calc_values/p141> ; data: <fault>), <startupkit.calc_values: 0x6000000a9180> (entity: calc_values; id: 0xd000000002380000 <x-coredata://7687b389-1346-4c27-9b93-99b324fc28d2/calc_values/p142> ; data: <fault>), <startupkit.calc_values: 0x6000000a9060> (entity: calc_values; id: 0xd0000000023c0000 <x-coredata://7687b389-1346-4c27-9b93-99b324fc28d2/calc_values/p143> ; data: <fault>), <startupkit.calc_values: 0x6000000a8d60> (entity: calc_values; id: 0xd000000002400000 <x-coredata://7687b389-1346-4c27-9b93-99b324fc28d2/calc_values/p144> ; data: <fault>), <startupkit.calc_values: 0x6000000a8ca0> (entity: calc_values; id: 0xd000000002440000 <x-coredata://7687b389-1346-4c27-9b93-99b324fc28d2/calc_values/p145> ; data: <fault>), <startupkit.calc_values: 0x6000000a6240> (entity: calc_values; id: 0xd000000002480000 <x-coredata://7687b389-1346-4c27-9b93-99b324fc28d2/calc_values/p146> ; data: <fault>), <startupkit.calc_values: 0x6000000a84c0> (entity: calc_values; id: 0xd0000000024c0000 <x-coredata://7687b389-1346-4c27-9b93-99b324fc28d2/calc_values/p147> ; data: <fault>), <startupkit.calc_values: 0x6000000ac3c0> (entity: calc_values; id: 0xd000000002500000 <x-coredata://7687b389-1346-4c27-9b93-99b324fc28d2/calc_values/p148> ; data: <fault>), <startupkit.calc_values: 0x6000000ac420> (entity: calc_values; id: 0xd000000002540000 <x-coredata://7687b389-1346-4c27-9b93-99b324fc28d2/calc_values/p149> ; data: <fault>), <startupkit.calc_values: 0x6000000a8040> (entity: calc_values; id: 0xd000000002580000 <x-coredata://7687b389-1346-4c27-9b93-99b324fc28d2/calc_values/p150> ; data: <fault>), <startupkit.calc_values: 0x6000000ac480> (entity: calc_values; id: 0xd0000000025c0000 <x-coredata://7687b389-1346-4c27-9b93-99b324fc28d2/calc_values/p151> ; data: <fault>), <startupkit.calc_values: 0x6000000ab040> (entity: calc_values; id: 0xd000000002600000 <x-coredata://7687b389-1346-4c27-9b93-99b324fc28d2/calc_values/p152> ; data: {     "calc_item" = "item9";     "calc_value" = 0; })] 

you have keep (uiapplication.shared.delegate as! appdelegate).savecontext() outside of loop.

below complete code.

    let itemnames = [["item1", "item2", "item3", "item4", "item5"], ["item6", "item7", "item8", "item9"]]     let flatitemnames = itemnames.flatmap({ $0 })      let context = (uiapplication.shared.delegate as! appdelegate).persistentcontainer.viewcontext      itemname in flatitemnames {         let managedcontext = nsentitydescription.insertnewobject(forentityname: "calc_values", into: context)         managedcontext.setvalue(itemname, forkey: "calc_item")     }     {         try context.save()     } catch let error nserror  {         print("error while saving data: \(error.userinfo)")     } 

to view db chanages can use sqlite manager

below screenshot.

enter image description here


Comments

Popular posts from this blog

php - How to display all orders for a single product showing the most recent first? Woocommerce -

asp.net - How to correctly use QUERY_STRING in ISAPI rewrite? -

angularjs - How restrict admin panel using in backend laravel and admin panel on angular? -