假设我有一些想要发布到服务器的数据。你在一个深深的地下酒窖(或者你使用t-mobile)并且你没有互联网连接。这些数据在哪里?把它留在那里等待连接?我宁愿保存这些数据,并使其可用于上传您有连接的第二个数据。
使用SQlite会是最好的方法吗?这只是我要临时存储的几个对象。
答案 0 :(得分:1)
如果只有几个对象将数据保存在NSUserDefaults或plist文件中。
NSUserDefaults设置:
[[NSUserDefaults standardUserDefaults] setObject:savedStr forKey:objectDataStoreName];
[[NSUserDefaults standardUserDefaults] synchronize];
NSUserDefaults获得:
savedStr = [[NSUserDefaults standardUserDefaults] objectForKey:objectDataStoreName];
或使用plist:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *newDirectory = [NSString stringWithFormat:@"%@/savedData", [paths objectAtIndex:0]];
[[NSFileManager defaultManager] createDirectoryAtPath:newDirectory withIntermediateDirectories:YES attributes:nil error:nil];
NSString *fullFileName = [NSString stringWithFormat:@"%@/savedItemsFile", newDirectory];
savedItems = [[NSMutableArray alloc] initWithContentsOfFile:fullFileName];
if (!savedItems) {
savedItems = [[NSMutableArray alloc] init];
}
savedItem = [[NSMutableDictionary alloc] init];
[savedItem setObject:savedStr forKey:objectDataStoreName];
[savedItems addObject:savedItem];
[savedItems writeToFile:fullFileName atomically:NO];
答案 1 :(得分:0)
那取决于你,apple指出你需要检查是否有可用的互联网连接。如果请求失败,您将收到错误消息。
如果您以后可以发送数据,请保存并稍后重试。如果您不能在以后发送数据,则通知用户无法发送数据。
这完全取决于应用程序的规格。
我使用plist,SQLite和coredata来保存设备上的数据,并在网络连接可用时将它们发送到服务器。
如果您准备好将数据存储在数据库中,只需添加一个位,告诉您是否已将数据发送到服务器,或者更好地让服务器返回上传的标识符,以便稍后更新某些记录上。
答案 2 :(得分:0)
如果不是很大,可以使用NSUserDefaults
如果它很大,我建议您使用Core Data