将CoreData用于第一个iPhone应用程序?

将CoreData用于第一个iPhone应用程序?,iphone,objective-c,web-applications,core-data,Iphone,Objective C,Web Applications,Core Data,我正在制作我的第一个iPhone应用程序。大部分UI都完成了,所以我剩下的大部分都是数据库内容 这是一个简单的健身房日志应用程序,我希望用户能够在线查看他们的数据。通过门户网站,它是可编辑的还是只读的,取决于实施的难度。” 我目前将所有练习存储在plist中,该plist被加载到一个表中。我希望有用户帐户(注册)和基本的配置文件视图等。我需要snyc和存储的大多数数据将是NSStrings、NSDate和NS int等,没有太多的自定义 CoreData是否符合我的需要?如果我使用CoreDat

我正在制作我的第一个iPhone应用程序。大部分UI都完成了,所以我剩下的大部分都是数据库内容

这是一个简单的健身房日志应用程序,我希望用户能够在线查看他们的数据。通过门户网站,它是可编辑的还是只读的,取决于实施的难度。”

我目前将所有练习存储在plist中,该plist被加载到一个表中。我希望有用户帐户(注册)和基本的配置文件视图等。我需要snyc和存储的大多数数据将是NSStrings、NSDate和NS int等,没有太多的自定义

CoreData是否符合我的需要?如果我使用CoreData,我可以通过HTML/CSS创建我的web门户并使用MySQL或SQLite进行同步吗


我对数据库非常陌生,今晚我将阅读苹果的CoreData文档。

Core Data非常适合在设备上存储数据,但看起来您希望将数据同步到web服务。您绝对不应该尝试来回发送核心数据对象(即sqlite文件)。看看JSON,有几个库可用,但我使用了Stig Brautaset的JSON框架,它是一个很棒的库

将数据转换为JSON字符串以传输到web服务很容易,只要您可以首先将其放入数组或字典中。接收JSON数据更容易,因为JSON解析器会为您创建数组和字典等对象,然后您可以以正常方式访问这些对象


XML是另一种选择,但我不认为它很容易使用,因为可用的库没有JSON库那么好。

您应该为应用程序使用核心数据,因为核心数据不是数据库系统,而是用于创建模型视图控制器设计应用程序的模型层的对象图管理系统(苹果API几乎需要这种设计模式。)

模型层是程序的实际核心。它是应用程序实用程序的实际逻辑中心。其他一切只是用户、服务器或其他应用程序的接口

例如,在您的应用程序中,您的模型层将模拟与健身房锻炼相关的某种真实世界对象、事件或条件,例如锻炼时间、日程安排、重复次数、锻炼系列等。这些真实世界事物之间的所有逻辑关系都将编码在数据模型中,而不会编码到其他地方。Core Data使其易于实现

一旦配置了数据模型,那么完成应用程序所要做的就是安装一个或多个接口。在您的情况下,听起来您希望设备上有一个UI,某个地方有一个服务器的JSON接口,可能还有一个应用程序内的http服务器通过Wifi运行。如果您的数据模型已经完全配置,请在g每个接口都变得微不足道,最重要的是,在一个接口中所做的更改会立即反映在所有其他接口中

所以,学习核心数据是件好事。事实上,掌握它是件好事。一旦你熟练了,它会让你简单地生产出应用程序

然而,尽管如此,不要让对优雅/完美设计的追求妨碍了交付。你的代码可能不雅观,也可能丑陋不堪,如果你的用户从来没有为此而受苦,你仍然会成功。仅仅放在开发人员驱动器上的漂亮代码对任何人都没有好处。让它与你现在知道的一起工作,并把它带出去。你可以以后再看


核心数据确实有一个学习曲线,正是因为它功能强大。如果你打算做很多应用程序,你应该花时间学习它,但再次强调,不要让学习曲线妨碍它的发布。

谢谢Adam。你的回答真的帮了我大忙。我应该研究任何特定的网站或教程吗?这是一个不错的教程,不是吗hough有点老了:据我所知,Adam Eberbach是正确的。但最好使用JSON,而不是XML,因为它在未来的许多应用程序中也会对您有所帮助。:)好的,今晚我将阅读苹果关于CoreData的文档,看看它是如何运行的。如果我使用CoreData,一切都会正常吗?比如不需要单独的密码等等?我可以像@Adam Eberbach在回答中说的那样实现JSON snyc?我认为使用CoreData会使我的简单数据结构变得太复杂。这取决于。我发现自己正在使用核心数据来处理我过去常常放入数组、字典或自定义对象中的内容。一旦你掌握了它,它就会变得比其他任何东西都更容易使用。核心数据简化了与UI和其他界面的交互。但所有这些都需要真正了解它。正如我所说的,不要让学习核心数据妨碍运输。如果你的应用程序工作正常,那么它很简单,你所需要做的就是移植到一个简单的JSON接口上,那么就不用为这个版本的核心数据操心了。如果需要,请稍后将其折射到核心数据中。我要补充的是,核心数据旨在处理复杂性,即具有复杂行为的复杂数据。如果你有简单的数据,没有任何行为和很少的修改,那么你就不需要核心数据,特别是当你面临学习曲线时。你想长期学习它,但不要让它妨碍了一个其他可行的应用程序的发布。感谢TechZen,我肯定会研究学习CoreData,但对于我的应用程序的第一个版本,我想我会坚持一些更简单的东西,以便尽快将其推向市场。不过,我仍然很难弄清楚如何进行数据处理。到目前为止,我把所有的练习和肌肉都放在了一张床上,它们可以完美地放在桌子上。我需要一种方法让用户编辑由这些练习组成的自定义例程,并可能将该数据保存到另一个plist。plist只是使用
writeToFile:
方法写入磁盘的集合对象,例如数组、字典等。您可以通过嵌套数组、字典和数据库来创建任意复杂的数据结构