当没有互联网连接时,保存POST请求核心数据

当没有互联网连接时,保存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); 
    } 
} 
+0

你能提供一个例子为了这?谢谢 – bluezald 2012-02-21 03:49:46

+0

编辑我的答案,包括教程 – Robotnik 2012-02-21 06:01:58

+0

所以基本上,我应该选择为每种Post请求创建不同的实体? – bluezald 2012-02-21 06:33:26