您可以使用JSON或PLISt进行通信,但二进制plist是 - 根据苹果 - 在手机端更快。
创建从二进制的plist字典比较简单:
NSPropertyListFormat format;
NSDictionary *myDictionary = [NSPropertyListSerialization
propertyListFromData:data mutabilityOption:NSPropertyListMutableContainers
format:&format errorDescription:&errorString];
从JSON只需要使用现成的JSON库之一创建它。一旦你的字典,它保存:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *file = [NSString stringWithFormat: @"%@%@.plist", [paths objectAtIndex:0], @"MyPlistBaseName"];
[plist writeToFile: file atomically:NO];
并在稍后重新加载:
NSDictionary *plist = [[[NSDictionary alloc] initWithContentsOfFile: file] autorelease];
然而,如果封装在一个单独的访问这些数据,那么你可以不用担心优化速度/内存成为问题的实施。只要将该signleton作为数据的“所有者”,使用诸如count
,getGroup(0)
(返回25的块)等方法即可。然后,您可以隐藏对象内的所有实现细节。
你存储了多少数据类型的数据?看起来plist文件可能是一个很好的方法(你没有真正给出排除它的理由)。您也可以直接将数据存储到驱动器,也许在缓存文件夹中。 –
这是一个对象数组。它从25个结果开始,但用户可以加载更多(如果他点击“加载25个以上”,数据以JSON格式从Web服务器传递,我想到了p-list解决方案,但没有找到如何去做。 ..我必须在网络服务器上准备数据(并且不知道如何......),并且我也不知道如何保存p列表,我有这个问题吗?你有没有这方面的参考?考虑到NSArray将包含的少量数据,我的应用程序代理解决方案会有问题吗?非常感谢您! – Yaniv
我在答案中包含了plist示例,但取决于您将允许多少个25组用户存储(并且如果你在某个点之后清除未使用的组),那么做一个集中的解决方案并不坏。就我个人而言,我更喜欢为这些目的创建一个单例对象,保留AppDelegate用于委托。 –