【问题标题】:Where should I put the logic to get the record from Database?我应该把从数据库中获取记录的逻辑放在哪里?
【发布时间】:2012-05-13 14:17:03
【问题描述】:

我在操作表上有两个按钮,当我单击其中一个按钮时,它将在另一个视图中显示所有学生记录。所有这些记录都需要从数据库中检索。目前我将检索记录的逻辑放在 viewwillAppear 方法中,但是当我点击按钮后,屏幕冻结了几秒钟,然后会显示学生列表。

根据我的理解,我检索记录的逻辑是在学生列表视图中的 viewWillAppear 方法中。单击按钮后,它应该直接进入学生列表视图,然后在学生列表视图中它会尝试加载数据。但是现在在我单击按钮后为什么它在操作表中冻结了?或者是否有任何其他地方可以放入加载记录逻辑,这样它就不会在我单击按钮后冻结在上一个操作表中。

【问题讨论】:

    标签: ios viewwillappear loaddata


    【解决方案1】:
    1. 如果您要发布到 SO,您始终应该包含您现有的代码。我建议您相应地更新您的问题。请参阅FAQ

    2. 当您说它“冻结”时,我是否推断您是说在您看到包含数据的新视图之前存在延迟,但它最终出现了?如果是这样,您的任务是如何确定延迟发生的位置。因此,我建议您开始在各种方法中插入 NSLog 语句,以便确定延迟发生的确切位置。加载新视图是否需要很长时间?对于要检索的数据?等等。除非你缩小问题范围,找出延迟的根源,否则你将无法解决它。您需要培养诊断和解决问题的技能。顺便说一句,如果您仍然无法确定如何诊断您的代码并且 NSLog 没有帮助,您还可以通过您的代码参考 Apple 在 debugging and stepping 上的文档。只有在您准确地缩小了代码中出现问题的位置之后,您才应该在此处发布。

    3. 第三,大多数人在 viewDidLoad 中加载新视图的数据,而不是 viewWillAppear;如果您曾经进入学生列表视图的子视图,然后又回到学生列表(即学生列表视图重新出现,即 viewWillAppear 将再次触发 ),您真的想要加载数据吗?再次,即使你已经加载了它?可能不是。我知道您在加载学生列表视图后可能没有另一个要加载的视图,但您最终可能会(例如,学生详细信息视图),所以好的做法是您应该在 viewDidLoad 中加载视图的数据(这将仅在首次加载视图时触发)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-18
      • 2013-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-19
      • 1970-01-01
      相关资源
      最近更新 更多