假设我有一些数据要发布到服务器。你在一个深深的地下酒窖(或者你使用t-mobile),你没有互联网连接。数据在哪里?只要把它留在那里等待连接?我宁愿保存这些数据,并使其可用于上传第二个连接。将数据保存到存储器
使用SQlite是否可以做到这一点?这只是我想临时存储的几个对象。
假设我有一些数据要发布到服务器。你在一个深深的地下酒窖(或者你使用t-mobile),你没有互联网连接。数据在哪里?只要把它留在那里等待连接?我宁愿保存这些数据,并使其可用于上传第二个连接。将数据保存到存储器
使用SQlite是否可以做到这一点?这只是我想临时存储的几个对象。
那么这取决于你,苹果指定你需要检查是否有互联网连接可用。如果您请求失败,您将收到错误信息。
如果稍后可以发送数据,请保存并稍后再试。如果您以后不能发送数据,请通知用户数据无法发送。
这一切都取决于应用程序的规格。
我已经使用plist,SQLite和coredata将数据保存在设备上,并在网络连接可用时将它们发送到服务器。
如果您已经准备好将数据存储在数据库中,只需添加一点即可告诉您是将数据发送至服务器还是让服务器返回上传标识以便更新某些记录稍后的。
如果它不是一件大事,你可以使用NSUserDefaults
如果是一件大事,我建议你使用Core Data
如果这只是一对夫妇的对象要么保存在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];
大示例代码。有一个小问题:与服务器的连接是否需要安全(SSL等)? – user523234
以上只是将数据本地保存在设备上,不涉及服务器。至于在数据提交给远程服务器时是否要使用安全数据连接取决于您,您的受众,数据类型和功能要求。 – ader