在userdefaults中保存临时数据?

时间:2016-12-30 17:06:16

标签: ios swift uiview nsuserdefaults

我的屏幕上有根据firebase数据放置在屏幕上的视图。当视图最初在屏幕上种植时,它从firebase中保存的x和y中拉出并使用它将自己放置在屏幕上。

视图是可拖动的,所以我想要当用户拖动视图,离开页面并返回视图时不再从旧的firebase数据中提取,而是一些本地保存的新x / y。在我做的事情之前只是在触摸结束时更新firebase上的x / y,但对于很多用户来说这样做非常不切实际加上它似乎没必要。

我有一个超级邋idea的想法是在用户默认值中保存x / y,当触摸以其中一个视图结束时执行以下操作:

1)每个视图都绑定了一个firebase UID,所以抓住

2)抓住触摸结束时按钮的X和Y位置

3)将键名称为字符串(UID +" xCoord"),并将其中一个用于Y并保存其下的值

4)当我在查看要查看的视图的x / y值时,查看是否为该UID的Xcoord + Ycoord设置了用户默认值,否则请转到它的火力基地。

然后,为了清理我的用户默认,我可以检查是否有任何UID存在的视图我将再次加载,如果没有,我可以清除那些坐标(不确定是否和#39;甚至是必要的。)

这是一种糟糕的做法吗?有没有更好的方法呢?我宁愿不进入核心数据,因为我已经像瘟疫那样避免使用它,这似乎很简单,不需要它。

关于如何做得更好的任何想法?

1 个答案:

答案 0 :(得分:1)

您基本上已经描述了macOS如何保存窗口的位置。那里的特征称为“自动保存”。用户默认设置是放置它的好地方。

我只为窗口映射一个属性,而不是两个。您可以使用CGPoint轻松地将NSValue(cgPoint:)存储在用户默认值中。我可能在属性名称上加上一些东西(比如“windowPosition:”),而不仅仅是使用UID,但它可能并不重要。您还可以将所有窗口位置存储在存储字典的单个属性中。真的,无论什么都相当方便。这或多或少是用户默认值,尤其是在用户无法直接与之交互的iOS中。在程序启动之间存储小块数据是其重点。