如何比较两个可选的NSArrays在Swift [英] how to compare two optional NSArrays in Swift

查看:126
本文介绍了如何比较两个可选的NSArrays在Swift的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们有两个可选的NSArrays。目标是检查,如果他们是平等的。我的解是

  func isArrayEqualToArray(array1:NSArray ?, array2:NSArray?) - > Bool {

let areBothEmpty:Bool = array1 == nil&& array2 == nil

var areBothEqual:Bool
if!areBothEmpty&& array2!= nil {
areBothEqual = array1?.isEqualToArray(array2!)? false
} else {
areBothEqual = false
}

let result = areBothEqual || areBothEmpty
return result
}

我觉得这有点太冗长。它应该以更简洁和可读的方式做。

解决方案

这很简单:

  func isArrayEqualToArray(array1:NSArray ?, array2:NSArray?) - > Bool {
return array1 == array2
}

这里 == 是比较可选项的运算符

  func ==< T:Equatable>(lhs:T?,rhs:T?) - Bool 

,如果两个操作数都为 true nil ,或两个
操作数都是非nil,且展开的操作数相等。



另外 NSArray 继承自 NSObject ,符合 Equatable
并将 == 比较使用 isEqual:方法,它是
实现为 isEqualToArray: NSArray
因此

  array1 == array2 

给出与

相同的结果

  array1.isEqualToArray(array2)


Let's have two optional NSArrays. The goal is to check, if they are equal. My solution is

func isArrayEqualToArray(array1:NSArray?, array2:NSArray?) -> Bool {

    let areBothEmpty:Bool = array1 == nil && array2 == nil

    var areBothEqual:Bool
    if !areBothEmpty && array2 != nil {
        areBothEqual = array1?.isEqualToArray(array2!) ?? false
    } else {
        areBothEqual = false
    }

    let result = areBothEqual || areBothEmpty
    return result
}

I feel that it is a little too verbose. It should be doable in a more concise and readable way. Does anyone have a better solution?

解决方案

It is quite simple:

func isArrayEqualToArray(array1: NSArray?, array2: NSArray?) -> Bool {
    return array1 == array2
}

does exactly what you want.

Why does it work? Here == is the operator that compares optionals

func ==<T : Equatable>(lhs: T?, rhs: T?) -> Bool

and that gives true if both operands are nil, or of both operands are non-nil and the unwrapped operands are equal.

Also NSArray inherits from NSObject which conforms to Equatable, and comparing NSObjects with == uses the isEqual: method, which is implemented as isEqualToArray: on NSArray. Therefore

array1 == array2

gives the same result as

array1.isEqualToArray(array2)

这篇关于如何比较两个可选的NSArrays在Swift的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆