使用NSUserDefaults存储唯一的订单ID

时间:2014-08-08 10:29:30

标签: ios nsuserdefaults

我正在开发销售点类型的应用程序,它在iOS上运行并在MySQL中存储订单和付款。我设计了订单表,以便有一个客户端ID和一个ClientOrderID,它是一个组合的唯一索引,可以防止重复销售。

iPad第一次连接到服务器并验证时获取其客户端ID。这意味着没有两台iPad可以获得相同的客户端ID。如果他们重新连接,他们会得到一个新的,它来自另一个为此设计的表中的列的自动增量值。

现在,客户端当然也必须有一个ClientOrderID来传递给服务器,以便唯一索引变得有用。我在这里做的是创建一个看起来像这样的静态方法:

+(int)getNewOrderOrSaleID {

int orderid = [[NSUserDefaults standardUserDefaults] integerForKey:@"orderid"];
[[NSUserDefaults standardUserDefaults] setInteger:orderid+1 forKey:@"orderid"];
[[NSUserDefaults standardUserDefaults] synchronize];

return orderid;
}

我现在的问题是:这是一种可靠的方法,还是NSUserDefaults会让事情变得混乱?

这可能有点远了,但是每当有人从iPad下订单时这样做会不会导致内部存储随着时间的推移而磨损?这个问题接近于修辞,因为我确实知道数据量有多小。

由于它一次只能生成一个订单,因此该方法一次不会运行两次。

1 个答案:

答案 0 :(得分:0)

由于您覆盖了相同的内容,因此您在用户默认值中没有新记录,现有记录将会更改。如果您只想保留一些小信息(例如int),则用户默认值是一个很好的地方。但是,正如Wain在评论中提到的,当您重新安装应用程序时,计数器将被重置。