0

我正在做一个项目,我有一个网站,我从中解析 JSON 数据。问题是它是一家连锁餐厅,所以有很多城市,每个城市可能有多家餐厅。现在为了设计,我正在为每个我知道不好的地址创建一个新方法。

- (void)fetchRSSFeedWithCompletion:(void (^)(FeedChannel *obj, NSError *err))block
{

NSString *formattedUrl = [NSString stringWithFormat:@"http://www.sodexo.fi/ruokalistat/output/daily_json/441/%@/fi", [self currentDate]];

NSURL *url = [NSURL URLWithString:formattedUrl];

NSURLRequest *req = [NSURLRequest requestWithURL:url];

FeedChannel *channel = [[FeedChannel alloc] init];

SMConnection *connection = [[SMConnection alloc] initWithRequest:req];

[connection setCompletionBlock:^(FeedChannel *obj, NSError *err) {
    if (!err) {
        [self setTopSongsCacheDate:[NSDate date]];
        [NSKeyedArchiver archiveRootObject:obj toFile:cachePath];
    }
    block(obj, err);
}];
[connection setJsonRootObject:channel];
[connection start];
}

解决这个问题的最佳方法是什么?我是否创建一个包含所有地址的类然后调用它们?我该怎么做?

4

1 回答 1

0

如果您将地址动态添加到您的服务器。那么你不应该将它们存储在设备上。因此,要回答您的具体问题:

我是否创建一个包含所有地址的类然后调用它们?

我认为你应该避免这种情况,除非你有将来不会改变的静态地址。

我在我的一个项目中完成了这种事情。这就是我所做的。(可能不是最好的方法,但我让它工作得很好而且很顺利):

对于地址,您需要有一个单独的 Web 服务。它将仅返回 JSON 数组地址(当然,您可以在中间 TableView 中显示)

然后,根据用户(或您的情况)的选择,您可以调用 Web 服务,该服务会返回该地址的所有餐厅详细信息。

注意:您的 Web 服务应返回最少的数据。您始终可以在另一个单独的 Web 服务中获得详细数据(例如,关于这些餐厅的评论)。避免将所有数据转储到单个调用中(尽可能)

可能不是一个完美的解决方案。但是,我希望这可以帮助你,有一些想法。

编辑

由于您无法编辑提供给您的 Web 服务,因此改进该方法的机会非常少。虽然您可以手动获取餐厅的所有代码并创建一个数据库(或者您可以为此使用 .plist 文件,因为数据量不会很大)。

可以帮助您的要点:

  • 主要部分是您必须组织您的数据(城市 -> 餐馆)。
  • 用于NSOperation将 Web 服务调用作为独立操作执行,NSOperationQueue以使流程井井有条。

在视图级别,无论您想展示什么,都由您决定。

于 2013-04-16T06:11:44.467 回答