Swift + Locksmith:不存储价值

时间:2016-08-05 18:37:54

标签: swift keychain

我试图在游戏结束时存储一个值。

我使用的是https://github.com/matthewpalmer/Locksmith updateData 方法。

它在Github Repo上说道

  

以及替换现有数据,如果已经存在

,则将数据写入钥匙串      

尝试Locksmith.updateData(["某些键":"另一个值"],forUserAccount:" myUserAccount")

这就是我所拥有的:

Select 
 A.patid
,A.episode_number
,A.preadmit_admission_date
,A.program_code
,A.program_value
,A.c_date_of_birth
,A.guarantor_id
,max(A.cov_effective_date) as "MaxDate"

from(

Select
  SA.patid
 ,SA.episode_number
 ,SA.preadmit_admission_date
 ,SA.program_code
 ,SA.program_value
 ,SA.c_date_of_birth
 ,BGE.guarantor_id
 ,BGE.cov_effective_date

 From System.view_episode_summary_admit as "SA"

 Left Outer Join

 (Select 
   BG.patid
  ,BG.episode_number
  ,BG.guarantor_id
  ,BG.cov_effective_date
  ,BG.cov_expiration_date

  from System.billing_guar_emp_data as "BG"

  Inner Join

  (Select patid, episode_number, preadmit_admission_date
  from System.view_episode_summary_admit ) as "A"
  On
  (A.patid = BG.patid) and (A.episode_number = BG.episode_number)

  Where
  BG.cov_effective_date <= preadmit_admission_date and
 (BG.cov_expiration_date >= preadmit_admission_date or
  BG.cov_expiration_date  Is Null)
  ) as "BGE"
  on
 (BGE.patid = SA.patid) and (BGE.episode_number = SA.episode_number)

  Where
  (program_code = '44282' or program_code = '44283' )
   and preadmit_admission_date >= {?Start Date}
   and preadmit_admission_date <= {?End Date}
   ) A

   Group By Patid, Episode_number

此行打印(&#34;已结束(EndDateAndTimeString)&#34;)输出:

  

结束19:33:38 + 2016-08-05

此行打印(&#34;无法设置时间&#34;)不执行任何操作

此行打印(&#34;此行已播放&#34;)输出:

  

此行已

这一行:打印(&#34;存储为END :( timeBattleEnded)&#34;)什么都不做。

当我设置断点然后在控制台中键入 po dictionary 时,它会向我显示已设置但未设置此值的其他内容。

谁能明白为什么?

编辑:

所以,检查控制台后。它确实出现在我将信息保存到钥匙串后它就在那里。然后我切换视图并更新钥匙串中的另一个项目。这似乎删除了原来的一个,只保留新项目。两者都有不同的名称。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

用马修帕尔默的确切话说:

  

只有一个数据存储在一个帐户下,因此当您调用updateData时,它将覆盖当前为该帐户存储的任何内容

所以,每当你调用Locksmith.updateData时,它基本上清除那里的所有数据,然后添加新值。您需要将密钥和值一起发送。

试试这个:

try Locksmith.updateData(["BattleEnd": "12345678", "Key2": "Value Two"], forUserAccount: "gameKeyChainValues")

答案 1 :(得分:1)

您在第一行中获取的字典不是不断更新的钥匙串视图,它只是您调用该方法时钥匙串中的内容的副本。更新钥匙串时,它不会更新。如果您在更新钥匙链后想要更新钥匙串,请在更新后再次致电loadDataForUserAccount()