2016-12-28 14 views
1

したがって、私は[Int]を得るループを持っており、Arrayには要素が1つしかなく、いくつかの要素があるかもしれません。その配列は同じであっても異なっていてもよい。素早い配列のユニーク配列[Int]を作成

Arrayのユニークな配列[Int]を作成したいと思います。どうやってするの?私はSetで作成しようとすると、私は

[INT]ハッシュ可能ではないことがわかり

私のコード:

for i in 0..<someData.count { 

     someData?[i].db.value(forKey: "value") as! [Int] // here I get [Int] 

     //here I'd like to create an array of unique arrays from from the line above 
    } 
+1

を独自のハッシュ可能配列を実装することができますか? –

+1

お試しください。 –

+0

@AhmadF、更新を参照してください。 –

答えて

1
var values:[Int] = [] { 
    didSet{ 
     var uniqueValues = [Int]() 
     var addedValues = Set<Int>() 
     for value in values { 
      if !addedValues.contains(value) { 
       addedValues.insert(value) 
       uniqueValues.append(value) 
      } 
     } 
     values = uniqueValues 
    } 
} 

値は、あなたの配列でのみ一意の値を保持しますこれはあなたが探しているものです。

1

あなたはそれはあなたがやろうとしているどのような種類の不明である...あなたはそれを明確にすることができ、あまりにも

import Foundation 

internal struct HashableIntArray: Hashable { 
    var value: [Int] 
    var hashValue: Int { return value.reduce(0, +).hashValue } 
} 

internal func == (lhs:HashableIntArray,rhs: HashableIntArray) -> Bool { 
    return lhs.value == rhs.value 
} 

let array = [HashableIntArray(value: [1,1,2]), HashableIntArray(value: [1,2,2]), HashableIntArray(value: [1,1,2])] 

let set = Set(array) 
print(array) // [HashableIntArray(value: [1, 1, 2]), HashableIntArray(value: [1, 2, 2]), HashableIntArray(value: [1, 1, 2])] 
print(set) // [HashableIntArray(value: [1, 2, 2]), HashableIntArray(value: [1, 1, 2])] 
関連する問題