那么让我们看看我是否可以对我的问题写一个足够清晰的描述...
我正在为博物馆开发一个应用程序,用户可以在其中通过 ID 或扫描二维码标签找到艺术品... 输入 ID 或扫描标签后,应用程序会将用户从搜索 View 发送到信息 View 。 信息 View 从 SQLite 数据库收集有关艺术品的信息...
我的问题是,在信息 View 中,我这样调用数据库类中的函数:
- (void)viewDidLoad
{
[super viewDidLoad];
NSArray *paintingInfo = [[PaintingDatabase database] findPaintingByID];
(additional code)
}
而且我在获取信息方面没有问题...工作正常... 但我的问题是,如果我返回搜索 View 并输入新 ID 或扫描新标签,调用/搜索不会再次运行,因为 View 仍在内存中...
那么,我该怎样去运行
NSArray *paintingInfo = [[PaintingDatabase database] findPaintingByID];
每次我进入 View ...?
我尝试将它放在 viewDidAppear 中,但我收到 EXC_BAD_ACCESS 错误...
最佳答案
我认为您即将回答自己的问题。由于 viewDidLoad 仅在您的 View 加载时被调用,如果您使用相同的 ViewController,您将不会获得您正在寻找的结果。一种选择可能是每次销毁并创建一个新的 ViewController。就性能而言,这可能是可以接受的。另一个选项(您似乎已经探索过)是将您的代码放在 viewWillAppear 中。我可能会对此进行更多调查,并找出导致崩溃的原因。
关于iOS:在 viewDidLoad 中运行数据库查询只能运行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7721120/