我正在开发销售点类型的应用程序,它在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下订单时这样做会不会导致内部存储随着时间的推移而磨损?这个问题接近于修辞,因为我确实知道数据量有多小。
由于它一次只能生成一个订单,因此该方法一次不会运行两次。
答案 0 :(得分:0)
由于您覆盖了相同的内容,因此您在用户默认值中没有新记录,现有记录将会更改。如果您只想保留一些小信息(例如int
),则用户默认值是一个很好的地方。但是,正如Wain在评论中提到的,当您重新安装应用程序时,计数器将被重置。