2009-01-27 47 views
2

好吧,这是一个相当广泛的问题。这是我的第一个应用程序,我不确定最好的方式去做这件事。该应用程序在IPHONE上。在线存储我的ObJ-C课程。 (亚马逊网络服务?)

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

我刚刚建立了导入/导出功能。我希望这两种方法可以将一家餐厅“发布”到网上,并从网上“获取”一家餐馆。我知道我可以用NSUrlConnection来做到这一点,并且我已经开始工作了。

但是我想要更清楚一点。例如,如果我想要提交已提交的餐厅的在线列表,并构建一个也可以与数据交互的网络界面?

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

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

任何建议?

感谢

回答

0

了解REST,它是提供一个基于Web的API的最简单和干净的方式。一些框架,比如Ruby on Rails,为您提供了一个开箱即用的REST界面。

然后,您需要找到一种方法将iPhone上的对象转换为REST友好的格式。 XML和JSON都是选项,但不幸的是,我还没有看到任何代码可以转换成XML或JSON,我真的可以推荐它,因为我还没有尝试过。但是,有些项目可能会让你朝着正确的方向前进。其中最有前途的前瞻性是这样的:

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

1

我不是很熟悉iPhone的发展还,但如果有相当简单的方法来使用Web服务,我会建议使用有类型的参数。这将使得这些服务更加“可用”于其他系统,他们不需要知道如何序列化/打包对象到字符串,而只需要如何调用一个函数:storeRestaurang(字符串名称,int等级...)等等。

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

1

看起来你要使用的plist。 任何可可集合类都可以写出到一个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

+0

感谢您的答复瑞安。奇妙的贡献。我目前使用nskeyedarchiver和nsdata来存储我的餐厅。我会使用plist,但是我现在有自定义类,如'Restaurant'和'TimeEntry',这些类的实例变量只是标准类。 – 2009-01-28 10:34:05