ios - Fail to save the attribute in NSManagedObject in my Swift language -


i have 3 attribute in setting entity. dayofexpiredday, dayofexpiredday1 , timeofexpiredday. after running below code, can save timeofexpiredday value. strange thing save value dayofexpiredday1 dayofexpiredday nil. print out mysettingitem data information on below well. can it? thanks

override func viewdidload() {     super.viewdidload()      // additional setup after loading view.     stepper.wraps = true     stepper.autorepeat = true     stepper.maximumvalue = 99     let appdel: appdelegate = uiapplication.sharedapplication().delegate as! appdelegate     let contxt: nsmanagedobjectcontext = appdel.managedobjectcontext!     let freq = nsfetchrequest(entityname: "setting")     mysettinglist = contxt.executefetchrequest(freq, error: nil)!      if mysettinglist.count == 0 {         daysbeforeexpireddate = 0         let en = nsentitydescription.entityforname("setting", inmanagedobjectcontext: contxt)         var newitem = setting(entity: en!, insertintomanagedobjectcontext: contxt)         newitem.dayofexpiredday = daysbeforeexpireddate         println("newitem.dayofexpiredday:\(newitem.dayofexpiredday)")         let initialdatecomponents = nsdatecomponents()         initialdatecomponents.year = 2014         initialdatecomponents.month = 12         initialdatecomponents.day = 25         initialdatecomponents.hour = 7         initialdatecomponents.minute = 0         initialdatecomponents.second = 0          let initialdate = nscalendar.currentcalendar().datefromcomponents(initialdatecomponents)!           /***** nsdateformatter part *****/          let formatter = nsdateformatter()         formatter.datestyle = nsdateformatterstyle.longstyle         formatter.timestyle = .mediumstyle          notificationtime = initialdate         newitem.timeofexpiredday = notificationtime          contxt.save(nil)         let freq = nsfetchrequest(entityname: "setting")         mysettinglist = contxt.executefetchrequest(freq, error: nil)!         mysettingitem = mysettinglist[0] as! nsmanagedobject     } else {         mysettingitem = mysettinglist[0] as! nsmanagedobject         daysbeforeexpireddate = mysettingitem.valueforkeypath("dayofexpiredday") as! int         var num : double = double(daysbeforeexpireddate)         stepper.value = num         notificationtime =  mysettingitem.valueforkeypath("timeofexpiredday") as! nsdate     }     println("mysettingitem:\(mysettingitem.description)")      updatedatepicker(notificationtime)     updatelabelnotification(daysbeforeexpireddate) } 

here setting.swift

import uikit import coredata  @objc(setting) class setting: nsmanagedobject {      @nsmanaged var dayofexpiredday: int     @nsmanaged var dayofexpiredday1: int     @nsmanaged var timeofexpiredday: nsdate } 

i have enabled sql debug mode -com.apple.coredata.sqldebug 3 , here output.

the first run app , set below output.

2015-05-15 20:05:35.244 jplist[10577:646588] coredata: annotation: connecting sqlite database file @ "/users/patrick/library/developer/coresimulator/devices/ce8973dd-5e27-4aa9-8976-    1cbb39ed4f32/data/containers/data/application/55364660-bdec-43e0-a3a5-191b0e53d490/documents/jplist.sqlite" 2015-05-15 20:05:35.245 jplist[10577:646588] coredata: annotation: creating schema. 2015-05-15 20:05:35.245 jplist[10577:646588] coredata: sql: pragma page_size=4096 2015-05-15 20:05:35.245 jplist[10577:646588] coredata: sql: pragma auto_vacuum=2 2015-05-15 20:05:35.249 jplist[10577:646588] coredata: sql: begin exclusive 2015-05-15 20:05:35.249 jplist[10577:646588] coredata: sql: select tbl_name sqlite_master tbl_name = 'z_metadata' 2015-05-15 20:05:35.249 jplist[10577:646588] coredata: sql: create table zlist ( z_pk integer primary key, z_ent integer, z_opt integer, zexpiredon timestamp, zfirstalarmon timestamp, zquantity float, zinfo varchar, zitem varchar, zquantity1 varchar, zphoto blob )  2015-05-15 20:05:35.250 jplist[10577:646588] coredata: sql: create table zsetting ( z_pk integer primary key, z_ent integer, z_opt integer, zdayofexpiredday integer, zdayofexpiredday1 integer, ztimeofexpiredday timestamp )  2015-05-15 20:05:35.250 jplist[10577:646588] coredata: annotation: creating primary key table. 2015-05-15 20:05:35.250 jplist[10577:646588] coredata: sql: create table z_primarykey (z_ent integer primary key, z_name varchar, z_super integer, z_max integer) 2015-05-15 20:05:35.256 jplist[10577:646588] coredata: sql: insert z_primarykey(z_ent, z_name, z_super, z_max) values(1, 'list', 0, 0) 2015-05-15 20:05:35.257 jplist[10577:646588] coredata: sql: insert z_primarykey(z_ent, z_name, z_super, z_max) values(2, 'setting', 0, 0) 2015-05-15 20:05:35.257 jplist[10577:646588] coredata: sql: create table z_metadata (z_version integer primary key, z_uuid varchar(255), z_plist blob) 2015-05-15 20:05:35.258 jplist[10577:646588] coredata: sql: select tbl_name sqlite_master tbl_name = 'z_metadata' 2015-05-15 20:05:35.258 jplist[10577:646588] coredata: sql: delete z_metadata z_version = ? 2015-05-15 20:05:35.258 jplist[10577:646588] coredata: details: sqlite bind[0] = 1 2015-05-15 20:05:35.258 jplist[10577:646588] coredata: sql: insert z_metadata (z_version, z_uuid, z_plist) values (?, ?, ?) 2015-05-15 20:05:35.258 jplist[10577:646588] coredata: details: sqlite bind[0] = 1 2015-05-15 20:05:35.259 jplist[10577:646588] coredata: details: sqlite bind[1] = "26333cdc-2708-470e-a0de-f579a2bbcac7" 2015-05-15 20:05:35.259 jplist[10577:646588] coredata: details: sqlite bind[2] = <nsdata len=355> 2015-05-15 20:05:35.259 jplist[10577:646588] coredata: annotation: saving new meta data; version = 1 ; uuid = 26333cdc-2708-470e-a0de-f579a2bbcac7 2015-05-15 20:05:35.259 jplist[10577:646588] coredata: sql: commit 2015-05-15 20:05:35.262 jplist[10577:646588] coredata: sql: pragma journal_mode=wal 2015-05-15 20:05:35.266 jplist[10577:646588] coredata: sql: pragma journal_mode=wal 2015-05-15 20:05:35.266 jplist[10577:646588] coredata: sql: pragma cache_size=200 2015-05-15 20:05:35.266 jplist[10577:646588] coredata: sql: select z_version, z_uuid, z_plist z_metadata 2015-05-15 20:05:35.270 jplist[10577:646588] coredata: sql: select 0, t0.z_pk, t0.z_opt, t0.zexpiredon, t0.zfirstalarmon, t0.zinfo, t0.zitem, t0.zphoto, t0.zquantity, t0.zquantity1 zlist t0  2015-05-15 20:05:35.270 jplist[10577:646588] coredata: annotation: sql connection fetch time: 0.0003s 2015-05-15 20:05:35.270 jplist[10577:646588] coredata: annotation: fetch using nssqlitestatement <0x786c4a40> on entity 'list' sql text 'select 0, t0.z_pk, t0.z_opt, t0.zexpiredon, t0.zfirstalarmon, t0.zinfo, t0.zitem, t0.zphoto, t0.zquantity, t0.zquantity1 zlist t0 ' returned 0 rows values: () 2015-05-15 20:05:35.270 jplist[10577:646588] coredata: annotation: total fetch execution time: 0.0008s 0 rows. 2015-05-15 20:05:38.164 jplist[10577:646588] coredata: sql: select 0, t0.z_pk, t0.z_opt, t0.zdayofexpiredday, t0.zdayofexpiredday1, t0.ztimeofexpiredday zsetting t0  2015-05-15 20:05:38.165 jplist[10577:646588] coredata: annotation: sql connection fetch time: 0.0002s 2015-05-15 20:05:38.165 jplist[10577:646588] coredata: annotation: fetch using nssqlitestatement <0x78782170> on entity 'setting' sql text 'select 0, t0.z_pk, t0.z_opt, t0.zdayofexpiredday, t0.zdayofexpiredday1, t0.ztimeofexpiredday zsetting t0 ' returned 0 rows values: () 2015-05-15 20:05:38.165 jplist[10577:646588] coredata: annotation: total fetch execution time: 0.0006s 0 rows. newitem.dayofexpiredday:0 2015-05-15 20:05:38.175 jplist[10577:646588] coredata: sql: begin exclusive 2015-05-15 20:05:38.175 jplist[10577:646588] coredata: sql: select z_max z_primarykey z_ent = ? 2015-05-15 20:05:38.176 jplist[10577:646588] coredata: annotation: getting max pk entityid = 2 2015-05-15 20:05:38.176 jplist[10577:646588] coredata: sql: update z_primarykey set z_max = ? z_ent = ? , z_max = ? 2015-05-15 20:05:38.176 jplist[10577:646588] coredata: annotation: updating max pk entityid = 2 old = 0 , new = 1 2015-05-15 20:05:38.176 jplist[10577:646588] coredata: sql: commit 2015-05-15 20:05:38.179 jplist[10577:646588] coredata: sql: begin exclusive 2015-05-15 20:05:38.180 jplist[10577:646588] coredata: sql: insert zsetting(z_pk, z_ent, z_opt, zdayofexpiredday, zdayofexpiredday1, ztimeofexpiredday) values(?, ?, ?, ?, ?, ?) 2015-05-15 20:05:38.180 jplist[10577:646588] coredata: details: sqlite bind[0] = (int64)1 2015-05-15 20:05:38.180 jplist[10577:646588] coredata: details: sqlite bind[1] = (int64)2 2015-05-15 20:05:38.181 jplist[10577:646588] coredata: details: sqlite bind[2] = (int64)1 2015-05-15 20:05:38.181 jplist[10577:646588] coredata: details: sqlite bind[3] = nil 2015-05-15 20:05:38.181 jplist[10577:646588] coredata: details: sqlite bind[4] = 0 2015-05-15 20:05:38.181 jplist[10577:646588] coredata: details: sqlite bind[5] = "441154800.000000" 2015-05-15 20:05:38.182 jplist[10577:646588] coredata: sql: commit 2015-05-15 20:05:38.186 jplist[10577:646588] coredata: sql: pragma page_count 2015-05-15 20:05:38.187 jplist[10577:646588] coredata: annotation: sql execution time: 0.0003s 2015-05-15 20:05:38.187 jplist[10577:646588] coredata: sql: pragma freelist_count 2015-05-15 20:05:38.187 jplist[10577:646588] coredata: annotation: sql execution time: 0.0003s 2015-05-15 20:05:38.188 jplist[10577:646588] coredata: sql: select 0, t0.z_pk, t0.z_opt, t0.zdayofexpiredday, t0.zdayofexpiredday1, t0.ztimeofexpiredday zsetting t0  2015-05-15 20:05:38.188 jplist[10577:646588] coredata: annotation: sql connection fetch time: 0.0003s 2015-05-15 20:05:38.190 jplist[10577:646588] coredata: annotation: fetch using nssqlitestatement <0x78629ba0> on entity 'setting' sql text 'select 0, t0.z_pk, t0.z_opt, t0.zdayofexpiredday, t0.zdayofexpiredday1, t0.ztimeofexpiredday zsetting t0 ' returned 1 rows values: ( "<nsmanagedobject: 0x786da760> (entity: setting; id: 0x7862a570 <x-coredata://26333cdc-2708-470e-a0de-f579a2bbcac7/setting/p1> ; data: {\n    dayofexpiredday = nil;\n    dayofexpiredday1 = 0;\n    timeofexpiredday = \"2014-12-24 23:00:00 +0000\";\n})") 2015-05-15 20:05:38.190 jplist[10577:646588] coredata: annotation: total fetch execution time: 0.0022s 1 rows. mysettingitem:<nsmanagedobject: 0x786da760> (entity: setting; id: 0x7862a570 <x-coredata://26333cdc-2708-470e-a0de-f579a2bbcac7/setting/p1> ; data: {     dayofexpiredday = nil;     dayofexpiredday1 = 0;     timeofexpiredday = "2014-12-24 23:00:00 +0000";     }) 

the second run app , set below output.

2015-05-15 20:06:10.938 jplist[10596:647402] coredata: annotation: connecting sqlite database file @ "/users/patrick/library/developer/coresimulator/devices/ce8973dd-5e27-4aa9-8976-1cbb39ed4f32/data/containers/data/application/4305f6af-eda9-4301-8c10-578037e85fce/documents/jplist.sqlite" 2015-05-15 20:06:10.941 jplist[10596:647402] coredata: sql: select tbl_name sqlite_master tbl_name = 'z_metadata' 2015-05-15 20:06:10.945 jplist[10596:647402] coredata: sql: pragma journal_mode=wal 2015-05-15 20:06:10.945 jplist[10596:647402] coredata: sql: pragma cache_size=200 2015-05-15 20:06:10.945 jplist[10596:647402] coredata: sql: select z_version, z_uuid, z_plist z_metadata 2015-05-15 20:06:10.946 jplist[10596:647402] coredata: sql: select 0, t0.z_pk, t0.z_opt, t0.zexpiredon, t0.zfirstalarmon, t0.zinfo, t0.zitem, t0.zphoto, t0.zquantity, t0.zquantity1 zlist t0  2015-05-15 20:06:10.946 jplist[10596:647402] coredata: annotation: sql connection fetch time: 0.0002s 2015-05-15 20:06:10.946 jplist[10596:647402] coredata: annotation: fetch using nssqlitestatement <0x78e5ebd0> on entity 'list' sql text 'select 0, t0.z_pk, t0.z_opt, t0.zexpiredon, t0.zfirstalarmon, t0.zinfo, t0.zitem, t0.zphoto, t0.zquantity, t0.zquantity1 zlist t0 ' returned 0 rows values: () 2015-05-15 20:06:10.946 jplist[10596:647402] coredata: annotation: total fetch execution time: 0.0005s 0 rows. 2015-05-15 20:06:12.441 jplist[10596:647402] coredata: sql: select 0, t0.z_pk, t0.z_opt, t0.zdayofexpiredday, t0.zdayofexpiredday1, t0.ztimeofexpiredday zsetting t0  2015-05-15 20:06:12.442 jplist[10596:647402] coredata: annotation: sql connection fetch time: 0.0003s 2015-05-15 20:06:12.442 jplist[10596:647402] coredata: annotation: fetch using nssqlitestatement <0x78f865c0> on entity 'setting' sql text 'select 0, t0.z_pk, t0.z_opt, t0.zdayofexpiredday, t0.zdayofexpiredday1, t0.ztimeofexpiredday zsetting t0 ' returned 1 rows values: ( "<nsmanagedobject: 0x78e78510> (entity: setting; id: 0x7a260b20 <x-coredata://26333cdc-2708-470e-a0de-f579a2bbcac7/setting/p1> ; data: <fault>)") 2015-05-15 20:06:12.442 jplist[10596:647402] coredata: annotation: total fetch execution time: 0.0011s 1 rows. fatal error: unexpectedly found nil while unwrapping optional value (lldb)  


Comments

Popular posts from this blog

Email notification in google apps script -

c++ - Difference between pre and post decrement in recursive function argument -

javascript - IE11 incompatibility with jQuery's 'readonly'? -