1

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

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

  2. 根据索引文件检查设备上的每个核心数据记录,并且: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,并将它们与设备上的核心数据记录进行比较。

4

2 回答 2

2

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

于 2012-10-09T00:37:59.647 回答
2

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

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

于 2012-10-09T01:01:18.540 回答