我应该在核心数据中使用字符串作为属性类型而不是整数吗?

时间:2014-04-03 16:13:36

标签: xcode core-data

我有一个允许用户输入数字的文本。这就是我所做的:

[_textfield setText:[NSString stringWithFormat:@"%d", [_textfield.text intValue]]];

基本上,我将文本字段中的文本转换为整数,然后转换回字符串。这将确保文本仅为数字。

现在我需要将_textfield中的文本存储到核心数据中。我想知道是否应该使用字符串作为属性类型或整数。

我知道整数是一个更明智的选择。但是对于这种情况,每次加载视图时,我都需要获取此数据并设置为_textfield。如果我使用整数作为属性类型,我每次都必须转换为字符串。我知道我需要做的只是:

_textfield.text = [numberFromCoreData stringValue];

我不需要用该数字进行比较,排序或进行任何算术运算,所以我应该只使用字符串作为属性类型吗?

4 个答案:

答案 0 :(得分:5)

整数搜索明显快于字符串搜索。这是在持久层中使用数字的最有说服力的理由。数字也可以与字符串排序不同。

出于性能原因,当我知道值总是一个整数时,我永远不会使用字符串。控制输入​​,强制它只接受数字并保持数据完整性。

答案 1 :(得分:1)

这取决于您需要如何使用该字段。几乎在每种情况下,整数数据都应该存储为整数类型,但并非总是如此。你肯定想要一个整数类型,如果你在它的数值以某种方式计数的情况下使用该字段。这包括排序(因为数字字段的速度快得多),比较数值或任何类型的数学运算。

但也有例外。例如,在某些情况下,最初似乎是固有数字的字段不会如此。像“大小”字段,通常是整数。但仔细观察后发现有些尺寸被指定为“8 - 10”,“12 - 14”等。这发生在我几年前工作的一个应用程序中。在这种情况下,我最终使用两个字段作为数据 - 一个可用于排序的数字“sortSize”,以及一个包含完整字符串的字符串“displaySize”。

答案 2 :(得分:0)

这可能不是你想要的,但你为什么不在你的文本字段中使用键盘类型“数字键盘”? 有了这个,你可以确定你的文本字段只有数字。

答案 3 :(得分:0)

老实说,我想不出一个令人信服的理由。字符串通常占用比整数更多的存储空间,但在现代计算领域,这不是一个问题。如果你真的没有把处理器推得太厉害,我会选择方便的。

从最基本的思考方式来看,整数是一个数字但是对于一个字符串,计算机需要知道字符串何时结束,开始,以及它的内容是什么,所以它要大一点。