保留数据一段时间的最佳方式(如4-5天)

该平台是monotouch我开发一个应用程序的iPhone。 我有一个叫Globals的课。 “Globals”对象在游戏过程中从UI和计算中收集条目。

我打算序列化对象并将其stream式传输到一个txt文件。 当游戏再次启动时恢复它。 (记住我创build的序列化文件只有用户终止的程序)

我使用反序列化的对象从用户终止程序的那一刻开始。

这样好吗? 这是最佳做法吗? 或者我需要使用其他方法来保持游戏的信息。 请为此评论或build议一个最佳实践。

如果你去SQLite的路线看看SQLite.Net它将保存您的退出对象,并加载它们几乎没有任何代码。

https://github.com/praeclarum/sqlite-net#readme

这里是一个例子:

// Add some extra atributes as needed to your existing class. public class Stock { [PrimaryKey, AutoIncrement] public int Id { get; set; } [MaxLength(8)] public string Symbol { get; set; } } 

创build一个SQLite数据库连接,并确保类存储的表存在。

 var db = new SQLiteConnection("foofoo"); db.CreateTable<Stock>(); 

添加一个股票实例到数据库…例如..保存它!

 public static void AddStock(SQLiteConnection db, string symbol) { var s = db.Insert(new Stock() { Symbol = symbol }); Console.WriteLine("{0} == {1}", s.Symbol, s.Id); } 

从DB获取一个或多个股票…

 public static IEnumerable<Stock> QueryValuations (SQLiteConnection db, int stock) { return db.Query<Stock> ("select * from Stock where StockId = ?", Id); } 

你应该真的尝试使用CoreData,并从你的Globals对象中创build一个实体。 使用核心数据将为您打开更多的function(例如iCloud同步),但也可以在对象更改时更新它。 如果你不这样做,并且只有在应用程序终止时才保存,那么你将冒失去用户的变化的风险,例如,如果发生exception终止(例如崩溃)。 看看核心数据。 网上有很多简单的教程。 这里是一个: http : //www.raywenderlich.com/934/core-data-on-ios-5-tutorial-getting-started

序列化和反序列化可能会有点缓慢,根据数据的大小一次获取整个数据。这可能适用于小数据,但原生的方法,如coredata,plist,sqlite或NSUserDefaults将更可接受.CoreData和SQLite可以用于大数据。

Sqlite教程

核心数据教程

NSUserdefaults教程