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

Iphone 将数据保留一段时间的最佳方法(如4-5天),iphone,.net,ios,serialization,xamarin.ios,Iphone,.net,Ios,Serialization,Xamarin.ios,平台是单触式的 我为iphone开发了一个应用程序。 我有一门课叫Globals。“Globals”对象在游戏期间从UI和计算中收集条目 我计划序列化对象并将其流式传输到txt文件。并在游戏再次启动时将其恢复。(请记住,我只创建由用户终止的程序的序列化文件) 我使用反序列化对象从用户终止程序的那一刻起继续 这边行吗?这是最好的做法吗?或者我需要使用其他方法来随时保存游戏信息。为此,请评论或建议一个最佳实践。您应该真正尝试使用CoreData,并用您的Globals对象创建一个实体。使用核心数据将

平台是单触式的 我为iphone开发了一个应用程序。 我有一门课叫Globals。“Globals”对象在游戏期间从UI和计算中收集条目

我计划序列化对象并将其流式传输到txt文件。并在游戏再次启动时将其恢复。(请记住,我只创建由用户终止的程序的序列化文件)

我使用反序列化对象从用户终止程序的那一刻起继续


这边行吗?这是最好的做法吗?或者我需要使用其他方法来随时保存游戏信息。为此,请评论或建议一个最佳实践。

您应该真正尝试使用CoreData,并用您的Globals对象创建一个实体。使用核心数据将为您提供更多功能(例如iCloud sync),但您也可以随着对象的变化进行更新。如果你不这样做,并且只在应用程序终止时保存,那么你就要冒失去用户更改的风险,例如如果出现异常终止(例如崩溃)。
看看核心数据。网上有很多简单的教程。这里有一个:

您真的应该尝试使用CoreData并用您的Globals对象创建一个实体。使用核心数据将为您提供更多功能(例如iCloud sync),但您也可以随着对象的变化进行更新。如果你不这样做,并且只在应用程序终止时保存,那么你就要冒失去用户更改的风险,例如如果出现异常终止(例如崩溃)。
看看核心数据。网上有很多简单的教程。这里有一个:

根据数据的大小,序列化和反序列化可能会有点慢,因为一次获取整个数据。这可能适用于小数据,但本地方法(如coredata、plist、sqlite或NSUserDefaults)更为可取。coredata和sqlite甚至可以用于大数据


根据每次获取整个数据的数据大小,序列化和反序列化可能会有点慢。这可能适用于小数据,但本地方法(如coredata、plist、sqlite或NSUserDefaults)更为可取。coredata和sqlite甚至可以用于大数据


如果您选择SQLite路线,请查看SQLite.Net,它将保存您的现有对象,并几乎不使用任何代码加载它们

以下是一个例子:

// 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; }
}
创建SQLite db连接并确保类Stock的表存在

var db = new SQLiteConnection("foofoo");
db.CreateTable<Stock>();
从DB获取一个或多个库存

public static IEnumerable<Stock> QueryValuations (SQLiteConnection db, int stock)
{
    return db.Query<Stock> ("select * from Stock where StockId = ?", Id);
}
publicstaticIEnumerableQueryValuations(sqliteConnectionDB,intStock)
{
返回db.Query(“从StockId=?”的Stock中选择*”,Id);
}

如果您选择SQLite路线,请查看SQLite.Net,它将保存您的现有对象,并几乎不使用任何代码加载它们

以下是一个例子:

// 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; }
}
创建SQLite db连接并确保类Stock的表存在

var db = new SQLiteConnection("foofoo");
db.CreateTable<Stock>();
从DB获取一个或多个库存

public static IEnumerable<Stock> QueryValuations (SQLiteConnection db, int stock)
{
    return db.Query<Stock> ("select * from Stock where StockId = ?", Id);
}
publicstaticIEnumerableQueryValuations(sqliteConnectionDB,intStock)
{
返回db.Query(“从StockId=?”的Stock中选择*”,Id);
}

为什么不使用CoreData或SQLite?这取决于数据的数量和结构。如果对您来说很简单,那么您当然可以使用plist。为什么不使用CoreData或SQLite呢?这取决于数据的数量和结构。如果对您来说很简单,请确保您可以使用plist。如果您要使用核心数据,请查看Magic Record和MoGenerator(都在github)。如果你打算使用核心数据,请查看Magic Record和MoGenerator(两者都在github)。他们使处理CD变得更加愉快。