保留数据一段时间的最佳方式(如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教程