【发布时间】:2009-08-24 19:19:47
【问题描述】:
我的应用程序中有一些数据结构需要在收到“didReceiveMemoryWarning”通知后保留。数据是用户使用应用程序(游戏)执行的所有操作的运行日志
我拥有的数据量可能不小(可能 > 几百 KB),因此 plist 似乎不是正确的解决方案。
两种可能性中的第一种是归档对象并使这些对象支持 NSCoding 协议。我不确定这是否是正确的选择。
第二个选项似乎是使用 CoreData,使用 NSManagedObjectModel 和 NSPersistentStoreCoordinator。这是存储这些对象的好方法吗?还是矫枉过正? (我正在使用 Apple 的“Recipes”示例应用程序作为参考)。
我的对象是自定义对象类型,最终包含 NSString、NSNumber、NSInteger 和其他简单类型。
我拥有的一些数据类型的示例:
// this the base object I need to start with to persist
@interface MyDataObject : NSObject
{
MyScore *aScore;
// Contains an object of type 'MyAction'
NSMutableArray *allActions;
}
@interface MyScore : NSObject
{
NSInteger currentScore;
NSDate lastUpdated;
}
@interface MyAction
{
NSNumber *actionId;
NSString *description
MyUser *associatedUser;
}
@interface MyUser
{
NSNumber *id;
NSString *name;
NSString *email;
}
用户可以玩很多不同的游戏,对于每个游戏,我都有一个记录他们所做动作的活动日志。用户可以在玩游戏时看到他们迄今为止在每个游戏中所做的动作,他们还可以在活跃和不活跃的游戏之间切换,这样他们也可以回顾过去的动作。
【问题讨论】:
-
发布您将使用数据的目的是相关的。您希望如何访问/检索数据将影响哪个是更好的解决方案。
-
修改了我的原始帖子以包含此信息。
标签: iphone objective-c cocoa-touch core-data