やりたいこと
arrayData1の要素を全て合わせた物をハッシュ化したいです。(要素が変わるとハッシュ値も変わるのであればどのような合わせ方でも良いです。
試したこと
data型とdata型が足せそうだったので
(中で何をやっているかは全くわからないです。エラーが起きなかったので内部で値が変わると思って使用しました)
reduceメソッドを使い要素を全て足した物をハッシュ化すれば良いと思ったのですが、
arrayData1の要素を変えても同じハッシュ値になってしまいました。
知りたいこと
data型とdata型を+演算やreduceメソッドを用いた演算をするとどのようになるのでしょうか?
要素が変わるとハッシュ値も変わるようにするためにはどのようなことをすると良いでしょうか?
swift
1 var number = Number() 2 3 let arrayData1:[Data] = [ 4 try! JSONEncoder().encode(number), 5 try! JSONEncoder().encode(number) 6 ] 7 8 let hashed1 = arrayData1.reduce(Data()) {(data1:Data,data2:Data) -> Data in return data1 + data2}.hashValue 9 10 number.num1 = 300 11 12 let hashed2 = arrayData1.reduce(Data()) {(data1:Data,data2:Data) -> Data in return data1 + data2}.hashValue 13 14 XCTAssertNotEqual(hashed1, hashed2) 15 16 17struct Number:Codable{ 18 var num1:Int = 100 19 var num2:Int = 200 20} 21 22XCTAssertNotEqual(hashed1, hashed2)//XCTAssertNotEqual failed: ("145005597") is equal to ("145005597") -
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/06 09:47
2018/09/06 09:59