gpt4 book ai didi

objective-c - 为什么 NSNumber 比较方法不同?

转载 作者:行者123 更新时间:2023-12-04 04:04:22 24 4
gpt4 key购买 nike

我使用了 NSNumber 类。

但在后续环境中可以使用的方法不同。

首先是命令行工具环境下的图片。 (Mac 操作系统)

其次是单 View 应用环境下的图片。 (iOS)

: 不能使用isGreaterThan:, isGreaterThanOrEqualTo:, isLessThan:..等方法

为什么会这样?

1] first picture

first picture

2] second picture

second picture

最佳答案

您在 Mac 上看到的那些方法实际上并不是 NSNumber 类的一部分,而是一个名为 NSComparisonMethods 的非正式协议(protocol)的一部分。这仅在 Mac OS X 上可用。此协议(protocol)中的方法是方便的方法,实际上只是使用许多 Cocoa 类上已经可用的 compare: 方法。如果需要,您可以很容易地将这些方法实现为 NSNumber 上的一个类别。下面是我将如何实现 -isGreaterThanOrEqualTo:

@interface NSNumber (ConvenientComparison)

- (BOOL)isGreaterThanOrEqualTo:(id)object;

@end

@implementation NSNumber (ConvenientComparison)

- (BOOL)isGreaterThanOrEqualTo:(id)object
{
if (![object isKindOfClass:[NSNumber class]])
{
// Not sure what NSNumber does if you pass in something that isn't a number.
// Handle this case
return NO;
}

NSNumber *numberToCompareAgainst = (NSNumber *)object;

NSComparisonResult comparisonResult = [self compare:numberToCompareAgainst];

if (comparisonResult == NSOrderedSame || comparisonResult == NSOrdereedDescending)
return YES;

return NO;
}

关于objective-c - 为什么 NSNumber 比较方法不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8555508/

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