gpt4 book ai didi

objective-c - NSNumber 文字的比较

转载 作者:太空狗 更新时间:2023-10-30 03:39:33 28 4
gpt4 key购买 nike

我真的很喜欢 Objective-C 中的新文字。我想知道是否有新的添加方式来比较数字。

例如,如果我想比较ab:

a = @1;
b = @2;

像这样比较它们的唯一方法是:

[a intValue] > [b intValue]

或者是否有更好、更优雅的解决方案?

最佳答案

对于相等性检查,您可以使用 isEqualToNumber它检查是否 id或内容相等(后者使用 compare ):

if ([a isEqualToNumber:b])                  // if a == b

不确定为什么他们也没有实现isGreaterThanNumberisLessThanNumber方便的方法(可能还有 >=<=),因为 compare下面的方法似乎有点笨拙。

对于不等式检查,只需使用 compare直接(你也可以这样做以获得平等,从下面的第一个可以看出):

if ([a compare:b] == NSOrderedSame)         // if (a == b)
if ([a compare:b] == NSOrderedAscending) // if (a < b)
if ([a compare:b] == NSOrderedDescending) // if (a > b)

if ([a compare:b] != NSOrderedSame) // if (a != b)
if ([a compare:b] != NSOrderedAscending) // if (a >= b)
if ([a compare:b] != NSOrderedSescending) // if (a <= b)

详细信息可以在 NSNumber class documentation page 上找到.


请记住,没有什么可以阻止您创建自己的helper 函数,例如,允许这样的代码:

if (nsnComp1 (a, ">=", b)) ... // returns true/false (yes/no)

或:

if (nsnComp2 (a, b) >= 0)  ... // returns -1/0/+1

即使它更少的是 Objective-C 而更多的是 C :-) 这取决于您对“优雅”的定义是否主要受效率或可读性的约束。这是否比您的 intValue 更可取?选项是您需要自己做出的决定。

关于objective-c - NSNumber 文字的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12361722/

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