用于存储大量记录的App结构

时间:2012-10-09 00:15:28

标签: iphone ios networking core-data data-structures

我正在创建一个处理房地产列表的iOS应用。目前的结构如下:

  1. 设备联系人服务器并下载一个索引文件,其中包含服务器上的所有当前记录ID以及上次修改每条记录的时间。

  2. 根据索引文件检查设备上的每个核心数据记录,并且: a)记录是最新的,没有任何反应。 b)记录已过期,将从设备中删除并从服务器重新加载。 c)记录不是索引文件的一部分,并从设备中删除。 d)在具有列表ID的设备上找不到记录,并从服务器下载。

  3. 我使用索引文件,因为我必须为每条记录仅下载一小部分数据才能进行比较。

    我的问题是这个,我目前在服务器上有大约1250个测试记录。使用当前设置,花费将近3分钟(使用WiFi)来完成初始索引检查例程。必须有更好的方法来处理iOS应用程序中的大量记录。我之前尝试加载核心数据中的所有记录是错误的吗?

    作为参考,我包括ListingRecord.h

    @property (nonatomic, retain) NSString * amenitiesText;
    @property (nonatomic, retain) NSString * bodyLabel1;
    @property (nonatomic, retain) NSString * bodyLabel2;
    @property (nonatomic, retain) NSString * bodyLabel3;
    @property (nonatomic, retain) NSString * brokerID;
    @property (nonatomic, retain) NSString * companyID;
    @property (nonatomic, retain) NSDate * dateCreated;
    @property (nonatomic, retain) NSString * descriptionText;
    @property (nonatomic, retain) NSString * displayPrice;
    @property (nonatomic, retain) NSString * featuredListing;
    @property (nonatomic, retain) NSString * headerLabel;
    @property (nonatomic, retain) NSData * headerPhoto;
    @property (nonatomic, retain) NSString * lastUpdate;
    @property (nonatomic, retain) NSNumber * latitudeData;
    @property (nonatomic, retain) NSNumber * listingID;
    @property (nonatomic, retain) NSString * listingType1;
    @property (nonatomic, retain) NSString * listingType2;
    @property (nonatomic, retain) NSString * listingType3;
    @property (nonatomic, retain) NSString * listingType4;
    @property (nonatomic, retain) NSString * listingType5;
    @property (nonatomic, retain) NSString * listingType6;
    @property (nonatomic, retain) NSString * listingType7;
    @property (nonatomic, retain) NSString * listingType8;
    @property (nonatomic, retain) NSNumber * longitudeData;
    @property (nonatomic, retain) NSNumber * numberPrice;
    @property (nonatomic, retain) NSData * photo1;
    @property (nonatomic, retain) NSData * photo2;
    @property (nonatomic, retain) NSData * photo3;
    @property (nonatomic, retain) NSData * photo4;
    @property (nonatomic, retain) NSData * photo5;
    @property (nonatomic, retain) NSString * pinLabel;
    @property (nonatomic, retain) NSData * thumbnailPic;
    @property (nonatomic, retain) NSString * sessionID;
    

    索引文件包含listingID和lastUpdate,并将它们与设备上的核心数据记录进行比较。

2 个答案:

答案 0 :(得分:2)

似乎有两个瓶颈,与服务器的通信和检查例程。为了帮助解决第一个瓶颈,我强烈推荐使用JSON,如果使用得当,它应该减少从服务器传递到设备的数据大小,并且非常容易使用。它还应该有助于第二个瓶颈,检查例程,因为您只需从服务器获取返回的数据,使用一行代码将其转换为JSON对象表示,然后您基本上处理值的NSDictionary。

答案 1 :(得分:2)

如果您需要一次完成所有这些操作,我会安排您的流逻辑,以便您可以在后台线程中执行此“初始索引检查例程”。

另一种选择是将索引文件发送到服务器并让后端服务器完成工作,它只返回添加,删除,更新等列表。这取决于你的后端服务器是否能够执行此操作