1

所以让我们看看我是否可以对我的问题写一个足够清晰的描述......

我正在为博物馆开发一个应用程序,用户可以通过 id 或扫描 qr 标签找到艺术品......一旦输入 id 或扫描标签,应用程序就会从搜索视图发送用户,到信息视图。信息视图从 SQLite 数据库收集有关艺术品的信息...

我的问题是,在信息视图中,我从数据库类中调用函数,如下所示:

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSArray *paintingInfo = [[PaintingDatabase database] findPaintingByID];

    (additional code)
}

而且我获取信息没有问题...工作正常...但我的问题是,如果我返回搜索视图并输入新 ID 或扫描新标签,则呼叫/搜索不会再次运行,因为视图仍在记忆中...

那么,我将如何去跑步

NSArray *paintingInfo = [[PaintingDatabase database] findPaintingByID];

每次我进入视图...?

我尝试将它放在 viewDidAppear 中,但我收到 EXC_BAD_ACCESS 错误...

4

2 回答 2

2

我想你已经接近回答你自己的问题了。由于 viewDidLoad 仅在您的视图加载时被调用,因此如果您使用相同的 ViewController,您将不会得到您正在寻找的结果。一种选择可能是每次都销毁并创建一个新的 ViewController。从性能上讲,这可能是可以接受的。另一种选择(您似乎已经探索过)是将您的代码放在 viewWillAppear 中。我可能会对此进行更多调查,并找出导致您崩溃的原因。

于 2011-10-11T03:39:12.290 回答
0

从简短的描述中很难分辨出来,但在我看来,这更像是一个应用程序架构问题,而不是特定功能的问题。

使用另一种方法可能会更好,从信息视图外部运行查询,然后通过委托方法更新视图的属性。这更像是一种 MVC 方法——控制器从模型中检索数据,然后将数据传递给要显示的视图。

正如您所描述的那样,您的信息视图似乎同时具有视图和控制器功能 - 这可能就是您在初始视图完成后尝试获取不同数据时遇到问题的原因。

不过,崩溃听起来不像是视图的问题 - 我会建议跟踪它并将其作为一个单独的问题。

于 2011-10-11T21:25:08.443 回答