gpt4 book ai didi

ios - 图表数据的核心数据模型设计

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:39:21 25 4
gpt4 key购买 nike

对于冗长的解释,我深表歉意,但我确实觉得有必要解释细节,这样我才能以最佳方式获得帮助,以创建正确的核心数据模型来满足我的要求。

我只是想找出创建我的数据模型的最佳方法,以便我可以快速高效地实现以下目标,这在我当前的 MySQL 设置中目前是不可能的。我正在使用 MySQL 从服务器返回所有值,但现在希望使用 CoreData 来缓存这些数据,并且只下载新的日期数据。

我有一个数据库存储这样的数据集:

{
"Agent_Id" = 32;
"Order_FinalisedDate" = "2014-05-17 03:39:54";
"Order_Id" = 2596;
"Order_ReferenceNumber" = "Pavan/0905/016";
"PieChart_Id" = 13585;
"PieChart_QuantityATOP" = 150;
"PieChart_TotalAmount" = 52500;
"Product_Id" = 20;
}

每次加载 viewController 时,我都会从服务器飞来 13,585 个这样的数据集。处理从服务器检索到的数据需要超过 1 分半钟的时间。这是非常低效的,我试图创建一个核心数据模型来帮助我按时显着减少流程。

这是在没有 Core Data 的情况下发生的当前过程

  1. 我只对过去 12 个滚动月感兴趣,例如银行如何退还您过去 12 个月的账户。因此,我从服务器获取了一个 JSON 格式的实时动态数组,将它们很好地复制到名为 monthsChartDataDictionary 的数组中的自定义 BankDateDataModel 数据模型中,该数组以这种格式存储数据yyyy-MM.

  2. 然后我会检查所有的销售,如果它有一个可以与 monthsChartDataDictionary 数组中的匹配日期相关联的日期,则抓取它们并对其进行分类。

    //Go through each data set
    for(id key in JSONDictionary){
    //First lets store each data set which we will use for another process.
    PieChartSliceDataModel *pcs = [[PieChartSliceDataModel alloc] initWithJSONData:key];
    [allPieChartDataArray addObject:pcs];

    /**
    Check to see if we have a date entry in the format of `yyyy-MM`
    If there is a
    */

    if([monthsChartDataDictionary objectForKey:pcs.PCS_StringOrderFinalisedDate]){
    [[monthsChartDataDictionary objectForKey:pcs.PCS_StringOrderFinalisedDate] addObject:pcs];
    }
    }

    这基本上就是所创建的 - monthsChartDataDictionary。一个字典,其键的格式为 yyyy-MM,并且在其关联的键中包含一组数据集。

    {   //An nsdictionary holding over 13,500 elements.
    "2013-05"=(..,..,..);
    "2013-06"=(..,..,..);
    "2013-07"=(etc);
    "2013-08"=();
    "2013-09"=();
    "2013-10"=();
    "2013-11"=();
    "2013-12"=();
    "2014-01"=();
    "2014-02"=();
    "2014-03"=();
    "2014-04"=();
    "2014-05"=();
    }
  3. 然后运行 ​​for 循环以同时完成两件事,请参见下面的 a) 和 b):

    a) 对于 monthsChartDataDictionary 字典中的每个月,我通过计算每个数据集的 PieChart_TotalAmount 获得该月的总销售额。这用于创建显示全年总销售额的折线图。 enter image description here

    b) 创建一个新字典 - finalPieChartData,其中每个键的格式为 yyyy-MM,存储的值是一个产品数组,显示每个产品的总销售额。这样就可以制作一个饼图来显示任何给定月份内产品的销售额。其中 12sp B - 250 是产品名称。 enter image description here

如何在核心数据模型中最好地表示所有这些?

我在想是否有一种方法可以存储所有必需的数据,包括总销售额,并将给定月份的不同产品的销售额分开...全部存储在核心数据中...或者是否最好在以下时间进行这些计算它们是从核心数据数据库中返回的,我猜这只会导致更多延迟。

到目前为止我有这个:

enter image description here

我创建它的逻辑基于以下想法:

  1. 我可以有一个数据库来存储所有单独的数据集
  2. 另一个表存储折线图的每月总销售额,因此我不必继续执行计算,除非我当然需要更新最近一个月的销售数据,因为我获得了仍在发生的新销售同月。
  3. 除了月度销售核心数据模型外,还会有一系列饼图切片,代表每个产品 ID 在任何特定月份内的总销售额。这意味着我不必一次又一次地处理计算。

这是正确的吗?是否有一种有效的方式来存储所有内容?

更新 1:更新了建议的核心数据模型,以尝试在应用程序中实现后提高效率

enter image description here

最佳答案

NSDateFormatter 对性能非常有害。如果您在映射过程中第一次使用它,则应尽量减少它的分配。如果你不想,你可以提供第一步的代码片段

您也可以在 xcode product-profile-time profiler 中使用。它可以帮助您跟踪低性能操作。

关于使用 Web 服务和核心数据,请查看 restKit

此外,您还可以在 raywenderlich 的此链接下获得有关使用 Web 服务和核心数据的建议 part 1 part 2

关于ios - 图表数据的核心数据模型设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23743127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com