【发布时间】:2016-12-30 17:06:15
【问题描述】:
我的屏幕上有根据 Firebase 数据放置在屏幕上的视图。当视图最初种植在屏幕上时,它会从 firebase 中提取保存的 x 和 y 并使用它来将自己放置在屏幕上。
视图是可拖动的,因此当用户拖动视图、离开页面并返回视图时,我希望不再从旧的 firebase 数据中提取视图,而是从本地保存的新 x/y 中提取一些视图。在我所做的只是在触摸结束时更新 firebase 上的 x /y 之前,但这对于许多用户来说是非常不切实际的,而且这似乎没有必要。
我有一个超级草率的想法是当触摸结束时通过执行以下操作将 x / y 保存在 userdefaults 中:
1) 每个视图都有一个绑定的 Firebase UID,所以抓住它
2) 在触摸结束时抓取按钮的 X 和 Y 位置
3) 将键名设为 String(UID + "xCoord"),并将 Y 设为一个,并将值保存在那里
4) 当我在寻找要绘制的视图的 x / y 值时,检查是否为该 UID 的 Xcoord + Ycoord 设置了用户默认值,否则请转到 firebase。
然后,为了清理我的用户默认设置,我可以检查是否有任何 UID 存在于我将再次加载的视图中,如果没有,我可以清除这些坐标(不确定这是否有必要)。
这是一种糟糕的做法吗?有更好的方法吗?我宁愿不进入核心数据,因为我已经像避免瘟疫一样避免它,而且这似乎很简单,不需要它。
有什么想法可以让它变得更好吗?
【问题讨论】:
-
我看不出用户默认设置与此有什么关系。为什么不使用变量?这就是它们的用途,即保存数据。
-
因为如果用户退出应用程序并返回,如果我只使用一个变量,无论用户将其拖动到何处,视图都将被绘制回其原始位置。我需要保存用户拖动视图的位置信息。
-
我在你的问题中没有看到这个概念。我错过了什么吗?
-
不管当前的讨论已经在 cmets 中进行,听起来它只是一小部分数据。那么,您担心将 then 放入用户默认值中是为了什么?好像你有使用用户默认值的想法是不好的,不应该被使用/误用? (但是少量的少量数据如何解释可能的滥用。如果是数千条数据或大量的大数据项,那么您就有滥用的理由)。如果您需要在应用程序存在/重新启动之间保留数据,只需将它们放在用户默认值中,如果没有,请使用 matt 所说的变量。
-
我说我想在本地保存 x / y 坐标,而不是用 Firebase 保存它,这样当用户离开/回来时,位置仍然被保存。我的想法是通过 userdefaults 来实现,但这似乎很草率。可能只是一个措辞不佳的问题,我的错。
标签: ios swift uiview nsuserdefaults