Jor*_*eña 0 c++ iphone cocoa objective-c
好吧,我想我可能会过度复杂化这个问题,但我确实陷入困境.基本上,我试图模拟一个重量组,特别是一个奥运重量组.所以,我有其为45磅的条,然后我分别具有2个权重的2.5磅,4 5的磅,然后10 2,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
Run Code Online (Sandbox Code Playgroud)
我想对这个重量集进行建模,以便我掌握这些信息:重量和重量.我知道我可以对此进行硬编码,但最终我想让用户输入他们可能拥有的每个重量的数量.
无论如何,最初我以为我可以简单地NSDictionary使用关键是重量,例如35,而值是数量.
当然我不能将原语存储在一个NSDictionary或其他Cocoa集合中,所以我必须将每个整数封装在一个NSNumber.然而,我对这个权重集建模的重点是我可以模拟某些权重的使用.例如,如果我使用35磅.重量需要2关(每侧一个),所以我必须去编辑35磅的值.重量来反映我从数量中扣除2的事实.
这涉及繁琐的任务,即拆箱NSNumber,转换回原语,进行数学运算,然后重新装箱NSNumber并将新结果分配给中的适当位置NSDictionary.经过一番搜索,我确认了我最初的预感,这不是一个好主意.
所以我有几个问题.首先,除了使用字典式解决方案之外,还有更好的方法来设置权重集吗?如果没有,建议的方法是什么?我是否必须离开可可领域并使用某种C++ STL模板,例如map?
我已经看到了一些信息NSDecimalNumber,我应该使用它吗?
就像我说的那样,如果我过于复杂,我也不会感到惊讶.我真的很感激任何帮助,谢谢.
编辑:我开始认为所描述的权重集'定义'确实应该是不可变的,因为它毕竟是一个定义.然后当我使用一定的重量时,我可以添加某种计数器.问题是,计数器也将是某种形式的集合,其值将被修改(添加到),以便我可以将其与特定权重相关联.所以我想我遇到了同样的问题.
我想我想要的是创建一个'克隆',可以说我可以轻松修改的权重集定义(模拟单个权重的使用).
对不起,我已经烧坏了.
将其存储在字典中并不是很自然.我认为最好的方法是制作一个表示权重的Weight类,并将它们粘贴在NSCountedSet中.你可以得到各种重量和各种重量,你可以得到整套[weightSet valueForKeyPath:@"@sum.weightInPounds"]的重量(假设重量有一个weightInPounds表示它们有多重的属性).
您可以在NSCountedSet中使用NSNumbers并根据需要将它们相加@sum.integerValue,但对我来说似乎有点尴尬.无论如何,NSCountedSet绝对是一个比NSDictionary更自然的集合来存储 - 好吧,一个计数集.
| 归档时间: |
|
| 查看次数: |
117 次 |
| 最近记录: |