【发布时间】:2012-10-09 10:39:00
【问题描述】:
我正在创建一个处理房地产列表的 iOS 应用。目前的结构如下:
设备联系服务器并下载一个索引文件,其中包含服务器上所有当前记录的 ID 以及每条记录的最后修改时间。
根据索引文件检查设备上的每个核心数据记录,并且: a) 记录是最新的,没有任何反应。 b) 记录已过期,从设备中删除并从服务器重新加载。 c) 记录不是索引文件的一部分,会从设备中删除。 d) 在具有列表 ID 的设备上未找到任何记录,并从服务器下载。
我使用索引文件是因为我只需下载每条记录的一小部分数据以便进行比较。
我的问题是这样的,我目前在服务器上大约有 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,并将它们与设备上的核心数据记录进行比较。
【问题讨论】:
-
如果您向我们展示您是如何进行初始索引检查例程的,这将很有帮助。
-
列表文件是什么格式的?例如XML?你有没有想过返回一个 JSON 对象来表示索引?它可能会加快速度。
-
@sosborn - 我执行 NSURLRequest 来获取 XML 文件,然后执行 NSXMLParser 来获取数据。您想了解更多详情吗?
-
@bennythemink - 对 JSON 不太熟悉,但它在大小上会不会与 XML 大致相同,并且与核心数据记录的比较需要大约相同的时间?
-
@sangony- 是的,我正在寻找您如何进行比较。这可能是你最大的瓶颈。
标签: iphone ios networking core-data data-structures