如何在Swift中检查NSDecimalNumber.zero()

6

使用“num1”作为比较参考来确定“num2”或“num3”是否为零。已成功在Objective-C中完成此操作,现在尝试在Swift中完成:

let num1: NSDecimalNumber = NSDecimalNumber.zero()
let num2: NSDecimalNumber = NSDecimalNumber.decimalNumberWithString("0")
let num3: NSDecimalNumber = NSDecimalNumber.decimalNumberWithString("0.000001")

if num1.compare(num2) == NSOrderedSame {
    println("They match")
}

这个尝试结果是:"error: use of unresolved identifier 'NSOrderedSame'." 在Swift中正确的方法是什么?(我已经在书本和网络上搜索了,但可能还缺少一些明显的东西,谢谢。)

3个回答

15

您的意思是:num1.compare(num2) == NSComparisonResult.OrderedSame


是的!谢谢,这正是我在寻找的。现在要学习如何在苹果文档中自己找到它:) - H_H
2
Swift可以推断出NSComparisonResult,因此您可以将其删除(仍然需要“.”)。 - Kevin

7

Swift中,可以更简单地实现这一点,例如:

    if num1 == num2 {
        println("They match")
    }

背景

(摘自使用Swift Cocoa和Objective-C APIs对象比较章节)

SwiftObjective-C对象通常使用=====运算符在Swift中进行比较。对于从NSObject类派生的对象,Swift提供了==运算符的默认实现。在此运算符的实现中,Swift调用NSObject类上定义的isEqual:方法。


你确定 NSNumber 对象的这个说法是正确的吗? - Léo Natan
1
我正在尝试再次找到它...公平地说,在过去的两周里,我已经阅读了所有可能的 Swift 文档,但我不知道我在哪里找到它...但我会再次找到它,因为那将是非常有用的信息。 - holex
1
根据我的测试,它似乎能够工作,也会查找一下参考资料。(不过我还没有测试NSOrderAscending和NSOrderDescending的情况。) - H_H
@LeoNatan,我又找到了参考资料,并已将其添加到我的答案中。 - holex
@H_H,我已经附上参考资料了。 :) - holex
显示剩余2条评论

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接