2017-06-30 102 views
1

我在这里担心的是,我不知道我是否有正确的理解,对此我需要您的帮助来帮助澄清。我已经通过堆栈溢出进行搜索,找不到这些信息。我只是要求在这里重新澄清理论。在Parse上储存信息

问题是:我正在从一个应用程序中检索Parse中的信息。分析表包含名称(字符串),动物(字符串),收藏夹(布尔)。我正在为应用程序创建一个Favorite部分,如果用户在以下信息上单击Favorite,它会设置以下信息favorite = true。

这里的问题是,因为我使用Parse,比方说,如果用户点击Bob(名字),Dog,(animal),true(favorite)。它会将最爱从假变为真。然后我会去最喜欢的部分,在那里它会读取整个数据库,并找到最喜欢== true并显示它。因为它是解析,这意味着每个人都会收到相同的信息,比如Person 1在Gurl(name),Cat(animal),true(favorite)上点击最爱。人1是否会看到不同人喜爱的鲍勃(名字),狗,(动物),真实(最喜欢的)的信息?这是我唯一关心的问题,因为我只想让特定的人看到他们最喜欢的东西。

你会怎么处理这个问题?我已经阅读了一些推荐Parse的信息,这是我关心的问题,还有一些人推荐了Core Data,但是从我的理解来看,Core Data不应该包含大量信息,因为我将会处理关于此项目的大量信息。感谢您的意见!

回答

2

人1会看到她不喜欢但被不同的人喜爱的鲍勃(名字),狗,(动物),真(最喜欢的)的信息吗?

简而言之:是的。

如果你想控制应用程序将显示给每个用户的数据,你必须至少使用一些用户逻辑(可以使用由开箱即用的Parse提供的PFUser)以及一些ACL。

下面的建模/逻辑只是一个建议,我没有完全知道你想要完成什么。

1 - 有你解析数据库一类Name, Animal, Favorite, Pointer<PFUser>

2 - 当列出的应用程序收藏夹,创建一个类似 过滤query.whereKey("user", PFUser.current())

3 - 当用户点击收藏的东西做

// If using PFSubclassing 
let yourParseModel = MyModel() 
yourParseModel.favorite = true 
yourParseModel.user = PFUser.current() 

// If NOT using PFSubclassing 
let obj = PFObject(className: "YourClassName") 
obj["favorite"] = true 
obj["user"] = PFUser() 
+0

谢谢你的信息!这真的很有帮助,我完全错过了用户部分。但是,我还有另外一个问题,您如何看待存储在设备上的本地数据库 –

+0

我认为本地数据库在讨论缓存或应用程序特定情况时非常重要。我有一个使用Parse本地数据存储的项目,由于性能问题,我不建议使用它。在具有〜1,5k寄存器的类中,花费大约0.8s来执行具有低复杂度滤波器的查询。由于Parse非常易于使用,我建议您只使用它来下载/保存云/上的数据,但本地使用诸如Core Data或Realm之类的数据。顺便说一句,上次我检查这个性能问题是已知的,并在GitHub上有一个问题,但我不知道如果他们已经工作。 – valcanaia

+0

以下是有关本地数据存储https:// github的性能问题。com/parse-community/Parse-SDK-iOS-OSX/issues/32 – valcanaia