保存多张信用卡/访问iPhone的最佳方式

时间:2011-07-08 18:52:59

标签: iphone objective-c xcode

所有

我有一个应用程序(目前正在使用Core Data),它接收信用卡信息,将其发送到我的服务器,获得响应(即授权,拒绝,错误等)。如果获得授权,该卡将与钱包中的“插槽”号一起保存。由于以下原因,服务器的工作方式在使用核心数据时有点困扰我;让我把它画出来。

信用卡有5个可用的“插槽”。

  1. //空
  2. //空
  3. //空
  4. //空
  5. //空
  6. 当用户添加信用卡时,会将其保存到“广告位”并为其分配值1-5以跟踪信用卡。

    1. 卡1
    2. 卡2
    3. 卡3
    4. //空
    5. //空
    6. 现在,使用Core Data困扰我的问题是删除卡片。我希望这个号码保持不变,我希望卡片保持在同一个口袋中,如下:

      1. 卡1
      2. //空
      3. 卡3
      4. //空
      5. //空
      6. ...并且下次添加卡时,需要让服务器知道它将“插槽”2.如何实现此类跟踪?

        提前致谢。

        如果我太模糊(我希望我不是),请发表评论,我会在几分钟内回复细节。

        编辑:手机实际上并不存储信用卡,而是存储插槽号码。服务器已保存信用卡,这就是插槽号码的原因。

2 个答案:

答案 0 :(得分:3)

首先,您是否考虑过使用Keychain来存储敏感信息而不是Core Data?

其次,如果你坚持使用核心数据并且你需要坚持订购,只需在名为“slot_id”的实体中添加一个额外的属性并将信息粘贴在那里。然后告诉服务器下一张卡应该存储到下一个第一个空槽中。如果您通过HTTP与服务器通信,则可以使用POST参数将其命令存储到空插槽中。

如何确定插槽是否为空?

使用排序描述符按slot_id排序。然后,将排序与实际自然排序进行比较。

what you should encounter: 1 2 3 4 5 6 7 
what you encounter:        1 2 3 5 6 7 

显然,缺少4,所以一旦发现差异,就会中止循环。

或者,跟踪单独实体或NSUserDefaults中的“最小可用插槽”,以优化搜索算法。或者甚至将“清空的插槽”跟踪为单独的实体,然后按其slot_ids排序。

答案 1 :(得分:1)

只需解析列表,当您找到描述为“// empty”的列表时,将卡插入该插槽。