在电子商务iOS应用程序中存储/检索用户输入的最合适方式?

时间:2016-10-12 12:22:48

标签: objective-c sqlite core-data nsuserdefaults fmdb

我对SqliteCore DataNSUserDefaultsPropertyList感到有些困惑。我知道什么是什么,但不清楚在哪里适当使用它们。

我知道有很多教程,但我擅长通过基于情境的理解来学习。所以,请帮助我在我现在面临的情况下理解这一点,并明智地利用可用的选项。

我正在开发一个电子商务iOS(本机)应用程序,我非常依赖API's进行数据显示。现在,我需要记录用户对产品的评论,并通过API发送。

即。我有三个组件,rating titlerating value(对于该标题)和另一个rating title ID。我用一个例子来定义,我需要存储多行细节,

Components             Data to be stored

**Title**    -   Quality |  Value  | Price
                         |         |
**Rating**   -     2     |   3     |   1
                         |         |
**TitleID**  -     10    |   11    |   12

像这样,会有很多条目,即components的数量因各种用户而异,对于某些用户来说,可能有三个以上的组件,必须保存这些组件。通过API发送。那么我应该如何保存这些数据呢?这是暂时保存这些数据的RIGHT方法吗?

1 个答案:

答案 0 :(得分:0)

如果我理解正确的话,因为vaibhav暗示你的问题似乎非常普遍,并且可能更多地涉及构建数据以满足您的要求而不是iOS / CoreData环境的技术方面。在这方面,我将根据您的描述为构建数据结构的质量评级提供一些想法。

如果您的评分始终是针对您展示的三个类别,即质量,价值和价格,我不会过分复杂化;我只是在评级记录中使用三个属性来保存用户在其产品评级中分配的值(仅显示以下所有列表中的选定属性和关系):

Product
    name

Rating
    ratedProduct   (many to one)
    qualityRating  Int
    valueRating    Int
    priceRating    Int

通过这种方式,您需要将值与API代码中的类型相关联,例如(其中item是检索到的评级记录):

display(product: item.ratedProduct.name, quality: item.qualityRating, value: item.valueRating, price: item.priceRating).

另一方面,您可能正在描述一种更通用的方法,该方法允许更频繁变化的评级类别,或者可能因产品而异。例如,这可能适用于评级包括适合服装的情况,而不适用于书籍等其他产品。在这种情况下,您需要一个更复杂的结构,其中产品可能具有可变数量的不同类型的评级,因此您需要另一层实体,以便您创建应用于产品的任意数量的评级记录

在此,您可以为用户分配给产品的每个评分创建单独的评级记录。

该结构的最简单形式如下:

Product
    name          String

UserEvaluation
    ratedProduct  (many to one)
    productRating (one to many)

ProductRating
    ratingType    (many to one)
    value         Int

RatingType
    ratingTitle   String
    ratingID      String or Int

然后你必须有一个更多的结构,你可以列出产品,然后通过循环访问评级,循环通过与产品记录链接的所有评级的集合,有点像这样(其中item是检索到的UserEvaluation):

displayTitle(product: item.ratedProduct.name)
for rating in item.productRating {
    displayRating(ratingTitle: item.productRating.ratingType.title, ratingValue: item.productRating.value)
 }

您可能希望将这些组合成一个带有名称和评分数组的方法。

为了跟踪事物,您可能还想创建另一个定义产品类的实体,并指定适用于每个类的专用评级(例如适合服装和汽车里程)。默认情况下,您还可能希望允许适用于所有产品的一些通用评级类型(例如您显示的质量和价格评级)。对于这种方法,完整的结构将如下所示:

Product Category
    title
    ratingType    (many to many)

Product
    productType   (many to one)

UserEvaluation
    ratedProduct  (many to one)
    productRating (one to many)

ProductRating
    ratingType    (many to one)
    value         Int

RatingType
    ratingTitle   String
    ratingID      String or Int

使用此结构,一旦为产品分配了productType,应用程序就会知道在UI中要求的评级。

您可以尝试使用适用于产品类别的所有类型构建更复杂的评级记录,但如果适用的类别随时间变化,则会非常混乱。您还可以创建一个" custom"允许用户指定标题并输入评级的评级类型,在这种情况下,您需要评级记录中的文本字段,仅当ratingType为" custom"时才需要。

我希望这会有所帮助......