1

我正在开发一个游戏应用程序,我在其中使用 NSCountedSet 作为我的角色清单,其中清单在视图之间动态变化。

换句话说:用户可以从视图 1 中购买项目并添加到库存中,然后用户切换到视图 2 并使用一些项目,这些项目应该从库存中删除,依此类推。

我的问题是:

1.如何有效地将 NSCounted 集写入和读取到 plist?

2.在视图 1 关闭时将数据写入磁盘并在视图 2 打开时重新读取数据的最佳方法是什么?或者有没有办法在应用程序启动时读取数据一次,进行所有更改,然后在应用程序终止时将数据保存回来?

数据仅由字符串和数字组成,数量很少。以下是我的代码片段:

- (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];
}
4

1 回答 1

0

1.如何有效地将 NSCounted 集写入和读取到 plist?...数据仅由字符串和数字组成,数量很少。

您可以使用一组(交替)字符串和数字来记录它。数字表示字符串对象的计数。对于小型集合,您不必担心操作的性能。

2.在视图 1 关闭时将数据写入磁盘并在视图 2 打开时重新读取数据的最佳方法是什么?或者有没有办法在应用程序启动时读取数据一次,进行所有更改,然后在应用程序终止时将数据保存回来?

您可以将它(模型)从一个视图控制器传递到下一个视图控制器,并且在许多情况下只共享相同的模型实例。处置是否有意义取决于您是否需要参考,以及需要该信息的频率。因此,最佳实践取决于内存和您确保数据正确的能力。例如,您可以选择共享以避免不必要的 I/O,并保持数据同步,但如果您很快不需要它们,您应该避免持有数千个对象。

如果您的数据不小,则应考虑使用 CoreData 之类的东西(3 个值非常小)。

于 2013-10-01T09:53:37.403 回答