解析 iOS 后端 - 对象、数组和用户数据建议
Parse iOS backend - Objects, Arrays, and User data advice
我希望这不是不合适的 post,但我想确保我作为后端实现解析的第一步是在正确的方向上进行的,以节省一些时间。我是 iOS 编程和解析 sdk 的新手,所以请多多包涵!
在我的应用程序中,用户可以在 Google 地图 mapView 上创建各种多边形叠加层,存储为 GMSMutablePath,它基本上是一个坐标列表。用户将拥有至少一组路径,每组路径至少有一条路径。每个组也会存储一些信息,存储为字符串或数字。此信息特定于一组路径。
我正在尝试找出存储这些数据的最佳方式。我的第一个基本问题是 1) 我可以将 GMSMutablePath 作为一个整体存储在对象数据类型中吗?或者 Object 数据类型是指通过解析创建的 class 吗?这个link(https://www.parse.com/questions/what-is-data-type-of-object-in-data-browser)是我找到的'best'对Object数据类型的解释,我不是很清楚
我的直觉是不,我不能存储 GMSMutablePath 对象,并且该对象引用一个 Parse 对象。这导致我 2) 那么我应该如何存储这些数据?我可以获得构成每条路径的坐标的各个 lat/long 值,我可以将它们存储为数字,并使用这些数字在别处重新创建路径。 None 的路径应该使用太多的坐标,并且每组中的路径不应该太多。
在数据浏览器中玩了一会儿,我看到我可以存储数组,但我不确定它们是如何格式化的,因为我需要一个数组(组)数组(路径) ) 个数组(lat/long 个值)。一点谷歌搜索告诉我可以做到,但没有告诉我怎么做。任何数据类型都可以存储在任何数组中,还是指定了数据类型?我习惯了 C++ 编程,所以我习惯了包含单一类型元素的数组。我在想的是,我需要一组对象,这将是路径组。这些对象中的每一个都将具有与组关联的 string/number 信息,以及组内路径的数组。对于这些路径中的每一个,它都必须是一个数组或一个对象。因为对于路径我只需要坐标 lat/long 值,我认为我可以将每条路径作为一个数字数组,并且我可以编写我的程序来使用一个数组,奇数索引是 lat /甚至索引都是长值。综上所述,我不确定如何创建所有这些。我不是在找人为我编写我的实现,但我能找到的所有示例都简单得多......如果有人能指出我正确的方向来做到这一点,或者对如何做有更好的想法做吧,我会喜欢一些指示。
每个用户都将拥有自己的群组,但该数据将在某个时候与其他人共享。数据将与其所属的用户相关联。考虑到这一点,我的最后一个问题是 3) 我应该将所有这些特定于用户及其组的信息存储在用户 class 上,还是将它们完全分开 class?我猜我应该向用户 class 添加一个对象,并将组存储在该对象中。我只是想确保我有这个权利,并考虑到未来的可扩展性。比如,当我拉取组数据时,我是否必须从另一个用户那里拉取整个用户数据,如果是这样,这是否会显着降低速度?我在想我确实必须发送整个用户数据,但我不知道这是否会带来任何安全风险。最好为组设置一个单独的 class,并存储与组关联的用户 ID?如果我这样做,我是否也应该将组作为对象存储在用户 class 上?
抱歉文字墙,但感谢您提供的任何指导!
如果您需要任何说明,请告诉我。
谢谢,
杰克
创建一个 class 来保存所有对象被证明是不必要的。它只有一些额外的细节,可以方便地添加到用户对象,然后在用户上有一个对象数组。
我学到的一些主要注意事项是:使用 addObject 添加到数组,而不是使用 setObject 将单个对象添加到 PFObject/User。
解析 fetching/saving 发生在后台线程中,因此如果您要加载数据以对其执行特定操作,请确保使用数据的代码出现在使用 [PFObject fetchInBackgroundWithBlock] 方法的块内。
此外,由于在解析 user/object 时对数据结构进行了更改,请确保退出当前用户并在您的应用中创建一个新用户,否则您可以 运行 进入许多可能使您的应用程序崩溃的未定义行为。
我希望这不是不合适的 post,但我想确保我作为后端实现解析的第一步是在正确的方向上进行的,以节省一些时间。我是 iOS 编程和解析 sdk 的新手,所以请多多包涵!
在我的应用程序中,用户可以在 Google 地图 mapView 上创建各种多边形叠加层,存储为 GMSMutablePath,它基本上是一个坐标列表。用户将拥有至少一组路径,每组路径至少有一条路径。每个组也会存储一些信息,存储为字符串或数字。此信息特定于一组路径。
我正在尝试找出存储这些数据的最佳方式。我的第一个基本问题是 1) 我可以将 GMSMutablePath 作为一个整体存储在对象数据类型中吗?或者 Object 数据类型是指通过解析创建的 class 吗?这个link(https://www.parse.com/questions/what-is-data-type-of-object-in-data-browser)是我找到的'best'对Object数据类型的解释,我不是很清楚
我的直觉是不,我不能存储 GMSMutablePath 对象,并且该对象引用一个 Parse 对象。这导致我 2) 那么我应该如何存储这些数据?我可以获得构成每条路径的坐标的各个 lat/long 值,我可以将它们存储为数字,并使用这些数字在别处重新创建路径。 None 的路径应该使用太多的坐标,并且每组中的路径不应该太多。
在数据浏览器中玩了一会儿,我看到我可以存储数组,但我不确定它们是如何格式化的,因为我需要一个数组(组)数组(路径) ) 个数组(lat/long 个值)。一点谷歌搜索告诉我可以做到,但没有告诉我怎么做。任何数据类型都可以存储在任何数组中,还是指定了数据类型?我习惯了 C++ 编程,所以我习惯了包含单一类型元素的数组。我在想的是,我需要一组对象,这将是路径组。这些对象中的每一个都将具有与组关联的 string/number 信息,以及组内路径的数组。对于这些路径中的每一个,它都必须是一个数组或一个对象。因为对于路径我只需要坐标 lat/long 值,我认为我可以将每条路径作为一个数字数组,并且我可以编写我的程序来使用一个数组,奇数索引是 lat /甚至索引都是长值。综上所述,我不确定如何创建所有这些。我不是在找人为我编写我的实现,但我能找到的所有示例都简单得多......如果有人能指出我正确的方向来做到这一点,或者对如何做有更好的想法做吧,我会喜欢一些指示。
每个用户都将拥有自己的群组,但该数据将在某个时候与其他人共享。数据将与其所属的用户相关联。考虑到这一点,我的最后一个问题是 3) 我应该将所有这些特定于用户及其组的信息存储在用户 class 上,还是将它们完全分开 class?我猜我应该向用户 class 添加一个对象,并将组存储在该对象中。我只是想确保我有这个权利,并考虑到未来的可扩展性。比如,当我拉取组数据时,我是否必须从另一个用户那里拉取整个用户数据,如果是这样,这是否会显着降低速度?我在想我确实必须发送整个用户数据,但我不知道这是否会带来任何安全风险。最好为组设置一个单独的 class,并存储与组关联的用户 ID?如果我这样做,我是否也应该将组作为对象存储在用户 class 上?
抱歉文字墙,但感谢您提供的任何指导!
如果您需要任何说明,请告诉我。
谢谢, 杰克
创建一个 class 来保存所有对象被证明是不必要的。它只有一些额外的细节,可以方便地添加到用户对象,然后在用户上有一个对象数组。
我学到的一些主要注意事项是:使用 addObject 添加到数组,而不是使用 setObject 将单个对象添加到 PFObject/User。
解析 fetching/saving 发生在后台线程中,因此如果您要加载数据以对其执行特定操作,请确保使用数据的代码出现在使用 [PFObject fetchInBackgroundWithBlock] 方法的块内。
此外,由于在解析 user/object 时对数据结构进行了更改,请确保退出当前用户并在您的应用中创建一个新用户,否则您可以 运行 进入许多可能使您的应用程序崩溃的未定义行为。