我正在开发一个游戏应用程序,我使用NSCountedSet作为我的角色库存,其中库存从视图动态变化到视图。
换句话说: 用户可以从视图1中购买商品并添加到库存中,然后用户切换到查看2并使用一些商品,这些商品应从库存中删除,依此类推。
我的问题是:
1.如何有效地为一个plist写一个NSCounted集?
2.在视图1关闭时将数据写入磁盘的最佳方法是在视图2打开时重新读取数据?或者有什么方法可以在应用程序启动时读取数据,进行所有更改,然后在应用程序终止时保存数据?
数据仅由字符串和数字组成,并且在ammount中很小。 以下是我的代码中的片段:
- (void) initInventory
{
//initialize the inventory with some string objects
[Inventory addObject:@"x"];
[Inventory addObject:@"y"];
[Inventory addObject:@"z"];
}
- (void) addItemToInvetory:(NSString*)ItemName
{
//add object passed in method to the inventory
[Inventory addObject:ItemName];
}
- (void) removeItemFromInventory:(NSString*)ItemName
{
//add object passed in method to the inventory
[Inventory removeObject:ItemName];
}
答案 0 :(得分:0)
1.如何有效地向一个plist写入和读取NSCounted集? ......数据仅由字符串和数字组成,数量很少。
您可以使用(交替)字符串和数字的数组来记录它。数字表示字符串对象的计数。对于一小部分,您不必担心操作的性能。
2.在视图1关闭时将数据写入磁盘的最佳方法是在视图2打开时重新读取数据?或者有什么方法可以在应用程序启动时读取数据,进行所有更改,然后在应用程序终止时保存数据?
您可以将它(模型)从一个视图控制器传递到下一个视图控制器,并且在许多情况下只共享相同的模型实例。是否有意义处置取决于您是否需要参考,以及需要多长时间才能获得这些信息。因此,最佳实践取决于内存和确保数据正确的能力。例如,您可以选择共享以避免不必要的I / O,并保持数据同步,但如果您不需要它们,则应避免持有数千个对象。
如果您的数据不小,您应该考虑使用CoreData之类的东西(3个值非常小)。