0

我正在尝试开发一个 iOS 应用程序来保存 ASIFormDataRequest(即带有图像、评论等的帖子),就像 Twitter 应用程序如何将推文保存到其草稿或路径应用程序和 Instagram 一样。

是否可以将“ASIFormDataRequest *request”实例直接保存到Core Data(这是我不知道的类型)

或者我应该根据我想要的表单请求创建不同的实体并保存请求的数据?例如,

[request setPostValue:@"something"    forKey:@"method"];
[request addPostValue:object1         forKey:@"key1"];
[request addPostValue:object2         forKey:@"key2"];
[request addPostValue:anImageURLPath  forKey:@"key3"];

..并为上述请求创建一个具有请求后值属性的实体?

4

1 回答 1

1

最好只保存要保留的值。您应该创建实体来存储您的值。

您可以为任何表单值拥有一个实体,与另一个实体具有一对多关系 - 这是您拥有的帖子值的简单键/值对

教程是我用来学习基本 CoreData 的教程。它会引导您创建实体并在它们之间建立关系

编辑:在评论中回答您的问题:

我会假设你有模型(数据类/实体或你称之为的任何东西)来代表“一篇文章”。我还没有看到你的代码,我不确定你是如何编写它的,但这就是我将如何实现它。

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);
    }
}
于 2012-02-21T03:27:25.763 回答