在线存储我的ObJ-C课程。 (亚马逊网络服务?)

时间:2009-01-27 10:02:16

标签: iphone objective-c cocoa-touch json amazon-s3

好的,这是一个相当广泛的问题。这是我的第一个应用程序,我不确定最好的方法。该应用程序位于IPHONE上。

我有一个'餐厅'课程。餐厅有许多不同的属性和开放时间。 我目前在nsdata的一个实例中存储一个餐馆(它符合NSCoding),LOcal存储很容易,我只使用nsdata。

我刚刚建立了导入/导出功能。我希望这两种方法能够将餐厅“发布”到网上并从网上“获取”一家餐馆。我知道我可以用NSUrlConnection做到这一点,我把它搞定了。

但是我想要更加聪明。例如,如果我想获取已提交的餐馆的在线列表并构建可以与数据交互的Web界面,该怎么办?

这是我到目前为止的想法: 创建一个'toString'方法,将我的类转换为文本表示。然后将字符串存储在服务器上。这将取代在线存储nsdata。这听起来合适吗?

但是,我希望能够查询餐馆的数量,并对我的在线“数据库”有更多的控制权。 XML是答案吗?我开始研究亚马逊网络服务并学习Json或Rest。

有什么建议吗?

由于

3 个答案:

答案 0 :(得分:1)

我对iPhone开发还不是很熟悉,但如果有合理简单的方法来使用Web服务,我建议使用带有类型参数的方法。这将使这些服务更加“可用”来自其他系统,他们不需要知道如何将对象序列化/打包到字符串,而只需要知道如何调用函数:storeRestaurang(string name,int rating ...)等。

这是一篇我将自己查看的文章,因为我希望更多地进入iPhone开发:http://icodeblog.com/2008/11/03/iphone-programming-tutorial-intro-to-soap-web-services/

答案 1 :(得分:1)

看起来你想使用一个plist。 任何cocoa集合类都可以写出plist,这是一种xml文件。甜蜜的部分是,如果您使用标准的可可值类,您可以编写该集合,并在以后阅读它。

NSString,NSNumber,NSDate,NSData,NSAray,NSDictionary对象可以放入集合中并直接存储到plist中。其他类必须序列化为NSData,然后作为plist写入磁盘。对于真正的自定义数据,NSKeyedArchiver可能就是您想要的。

对于简单的字符串和数字数据,将其全部打包到NSDictionary中,然后将其写入plist。现在看看你的Mac,你会看到有多受欢迎的plist。

NSDictionary API - Storing Dictionaries

Property List Programming Guide

Archives and Serializations Programming Guide for Cocoa

答案 2 :(得分:0)

了解REST,它是提供基于Web的API的最简单,最简洁的方法。一些框架,比如Ruby on Rails,可以为您提供开箱即用的REST接口。

然后,您需要找到一种方法将iPhone上的对象转换为REST友好格式。 XML和JSON都是选项,但遗憾的是我还没有看到任何我真正推荐的转换为XML或JSON的代码,因为我还没有尝试过任何代码。但是,有些项目可能会引导您朝着正确的方向前进。其中最有希望的是:

http://github.com/yfactorial/objectiveresource/tree/master