当没有互联网连接时,保存POST请求核心数据
问题描述:
我正在尝试开发一个iOS应用程序,它保存一个ASIFormDataRequest(即发布图片,评论等),就像Twitter应用程序如何将一条推文保存到其草稿或路径应用和Instagram以及..当没有互联网连接时,保存POST请求核心数据
才有可能只用“ASIFormDataRequest *请求”实例直接保存到核心数据(这是一个类型的,我不知道)
还是应该我根据需要创建不同的实体并保存请求的数据? 例如像
[request setPostValue:@"something" forKey:@"method"];
[request addPostValue:object1 forKey:@"key1"];
[request addPostValue:object2 forKey:@"key2"];
[request addPostValue:anImageURLPath forKey:@"key3"];
..和创建与请求的提交值的属性上述请求的实体?
答
最好的可能是你只保存你想保留的值。您应该创建实体来存储您的值。
你可以有任何形式的值一个实体,一个一对多的关系到另一个实体 - 这是一个简单的键/值对你有
this教程后的值是一个我曾经学习基本的CoreData。它引导您完成创建实体和它们之间
编辑使关系:在回答你的问题的意见:
我会假设你有模型(数据类/实体或任何你给他们打电话)代表'A Post'。我没有看到你的代码,我不确定你是如何编写它的,但这是我如何实现它。
1)有一个从用户获取数据的表单。 (以及代表此表单的模型)
2)用户点击'发送',将数据(作为模型)传递给网络服务,网络服务将其转换为FormDataRequest并尝试发送。 3)如果网络失败,(或者如果用户刚刚点击'保存草稿'),则模型被发送到数据服务,该服务将模型保存到CoreData。 (创建一个CoreData实体哪位应该是相似的,如果不一样的价值观在模型 - 副本,并保存实体)
为(半)伪代码:P
class MyFormViewController{
// Obviously declared in the header file ;)
TextField name;
TextField dob;
...
// View Stuff dealing with displaying the form
...
function getModelForFieldValues() {
Model m;
m.name = name.Text;
m.dob = dob.Text;
return m;
}
function send_buttonPress() {
Model myModel = getModelForFieldValues();
BOOL success = NetworkService.send(myModel); //Attempts to send the data over the network
if(!success) {
DataService.save(myModel); //Saves the model data to CoreData
}
}
function saveDraft_buttonPress() {
Model myModel = getModelForFieldValues();
DataService.save(myModel);
}
}
你能提供一个例子为了这?谢谢 – bluezald 2012-02-21 03:49:46
编辑我的答案,包括教程 – Robotnik 2012-02-21 06:01:58
所以基本上,我应该选择为每种Post请求创建不同的实体? – bluezald 2012-02-21 06:33:26