Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 什么';在iOS4中存储配置的最佳方式是什么?_Iphone_Objective C_Ios_Ios4 - Fatal编程技术网

Iphone 什么';在iOS4中存储配置的最佳方式是什么?

Iphone 什么';在iOS4中存储配置的最佳方式是什么?,iphone,objective-c,ios,ios4,Iphone,Objective C,Ios,Ios4,我要写配方应用程序。在iOS4中存储配置(配方列表)的最佳方法是什么?XML、JSON文件、核心数据或其他什么?我想使用SQLITE,因为它很容易使用,而且您总是可以访问组织良好的数据 我会使用SQLite。尽管CoreData在检索方面有一些优势,但实际将数据加载到数据存储中有点困难。您甚至可以使用类似于包装SQLite的东西,如果这使事情变得更容易的话 由于配方将是HTML,我只需将它们存储在一列中,并为类别、关键字、图像块等添加其他列。我还将包括一列,用于存储用户关于每个配方的个人注释 如

我要写配方应用程序。在iOS4中存储配置(配方列表)的最佳方法是什么?XML、JSON文件、核心数据或其他什么?

我想使用SQLITE,因为它很容易使用,而且您总是可以访问组织良好的数据

我会使用SQLite。尽管CoreData在检索方面有一些优势,但实际将数据加载到数据存储中有点困难。您甚至可以使用类似于包装SQLite的东西,如果这使事情变得更容易的话

由于配方将是HTML,我只需将它们存储在一列中,并为类别、关键字、图像块等添加其他列。我还将包括一列,用于存储用户关于每个配方的个人注释


如果您的食谱更结构化,我会将它们作为JSON存储在数据库中,因为我发现在iOS上处理XML很麻烦。

首先,这取决于数据最初存储的位置。你的菜谱应用程序是自我一致的,也就是说,它会包含应用程序中捆绑的所有收据,还是基于用户交互从网络下载?(例如,搜索区域收入或季节收入等)

来自网络的收据(在线应用程序) 在这种情况下,您将通过请求从网络下载收据。存储它们的最佳方法是在应用程序运行时将它们动态地留在内存中(内存缓存)。一旦内存压力较低,您将立即清除内存缓存。收据加载将是延迟的,就像收据在内存缓存中一样,它将从内存缓存中检索,如果丢失(因为从未加载或清除),它将再次从网络中检索。通过设置网络磁盘缓存(使用标准的Cocoa缓存系统或一些开源框架,如MKNetworkKit或ASIHTTPRequest),可以实现很大的改进。在这种情况下,将按以下顺序检索收据:内存缓存、磁盘缓存、网络。然后,应用程序将脱机工作(仅适用于已加载的收据),您无需担心收据存储问题,因为磁盘缓存将解决此问题

集束收据 通常,收据内存图可能比收据的简单“数组”稍微复杂一些。如果您将收据链接到提供收据的餐厅,则可以有收据表(“实体”)、配料表、餐厅表、摄影表等。在这种情况下,对象图的复杂性使得CoreData是更好的解决方案。您不会关心持久存储(通常是SQLite,由CoreData framework管理)。 您可能需要在启动时预加载CoreData存储,这可以使用“开发应用程序”完成,该程序读取原始数据源(xml、json、csv),创建托管对象并将其保存在CoreData存储中。然后,您将获得结果文件,并将其保存在捆绑包中。 如果你想让你的应用程序保持最新,从网络上获取新的收据,而不是每次都发布应用程序更新,那么可能会带来额外的复杂性。在这种情况下,最佳流量为: -将CoreData存储放在应用程序包中 -首次启动时,将其复制到应用程序沙盒文档区域(如果不想为用户添加额外的备份空间,请复制应用程序库/缓存;然后保护此区域,防止操作系统缓存自动清理) -每次应用程序从网络(自动或应用内购买)检索新收据时,解析接收到的数据(xml、json、csv等),并将其保存在CoreData存储器中


这个建议不是凭空猜测的,而是真实的经验。我开发了几个收据应用程序,尤其是在线收据应用程序。

但是,配方需要以某种格式存储在SQL表中。是的,这取决于您喜欢的配方和应用程序结构,您可能需要多个表来存储您的收据数据。一切都取决于你;)它是没有服务器端的独立应用程序。配置将在应用程序内部。配方数据是结构化的,还是用户将输入自由格式的文本?配方有标题、图像、类别(组)和完整描述。对于完整的描述,我将使用HTML。用户只能读取配方。您使用的配方描述格式是什么?HTML或自定义格式?在某些情况下,我使用HTML,通常在原始应用程序在web浏览器上运行时使用HTML,或者提供的内容为您提供了一些适合该设备的优秀CSS。但对于自定义应用程序,我会避免使用HTML,而更喜欢构建自定义UI,在这种情况下,首选格式是JSON,其中包含描述字段、配料列表、评级、时间、难度、餐厅列表、照片列表等等。。。