代码之家  ›  专栏  ›  技术社区  ›  Jorge Israel Peña

在混合原语和Cocoa集合时实现可变性

  •  0
  • Jorge Israel Peña  · 技术社区  · 15 年前

    好吧,我想我可能把这个问题复杂化了,但我真的被卡住了。基本上,我正在尝试建立一个体重模型,特别是奥运会的体重模型。所以我有45磅的杆,然后我有2.5磅的重量,4/5磅,然后分别是2/10,25,35和45磅。总共300磅。

    bar = 45 lbs
    2 of 2.5
    4 of 5
    2 of 10
    2 of 25
    2 of 35
    2 of 45
    

    不管怎样,最初我以为我可以有一个 NSDictionary 键是重量,例如35,值是数量。

    当然,我不能将原语存储在 字典 或者其他的可可收集,所以我必须将每个整数封装在一个 NSNumber . 但是,我对这个权重集建模的目的是为了模拟某些权重的使用。例如,如果我使用一个35磅的重量减去2(每侧一个),那么我必须去编辑35磅的重量值,以反映我从数量中减去2的事实。

    这涉及到拆箱的繁琐任务 数字对象 数字对象 字典 . 在四处搜寻之后,我证实了我最初的预感 this was not a good idea .

    所以我有几个问题。首先,除了使用字典式的解决方案之外,还有更好的方法来建模权重吗?如果没有,建议的方法是什么?我是否需要离开可可领域,并求助于使用某种C++ STL模板,比如 map ?

    我看到了一些关于 NSDecimalNumber ,我应该用这个吗?

    就像我说的 ,如果我把事情复杂化了,我也不会感到惊讶。我真的很感激任何帮助,谢谢。

    编辑 毕竟是个定义。当我使用一定的重量时,我可以 添加

    我想我要做的是创建一个“克隆”,也就是说权重集定义,我可以很容易地修改它(模拟单个权重的使用)。

    2 回复  |  直到 8 年前
        1
  •  5
  •   Chuck    15 年前

    把这些存储在字典里不是一种自然的适合。我认为最好的方法是创建一个表示权重的Weight类,并将它们粘贴到NSCountedSet中。你可以得到每个种类的重量和每种的计数,你也可以得到整套的重量 [weightSet valueForKeyPath:@"@sum.weightInPounds"] (假设重量有 weightInPounds

    您可以使用NSCountedSet中的NSNumbers并用 @sum.integerValue 如果你愿意,但我觉得有点尴尬。不管怎样,NSCountedSet绝对是一个比NSDictionary更自然的集合,因为它能很好地存储一个已计数的集合。

        2
  •  1
  •   andyvn22    15 年前

    把你的号码储存在电脑里没有错 NSDictionary ! 你提到的问题是指复杂,频繁的数学。转换自 NSNumber 和简单相比,背是慢的 int 除此之外,与人类感知相比仍然是超快速的。我认为你的词典想法是正确的 编辑: 不如查克的好 NSCountedSet 想法。:)