2017-08-17 18 views
1

私は重複値を持つタプル配列を持つSwift 3のプロジェクトで作業しています。NSSetに保存する方法と同じ値を複製しない方法があります。私のタプル配列の構造は以下の通りです。このように、後に、私はあなたが同じ曲タプル配列の重複する値を削除します

struct Song: Equatable { 
    var title: String? 
    var healerName: String? 
    var trackUrl:String? 
    var trackID:String? 
    var imageUrl: String? 

    init(_ title: String, _ healerName:String, _ trackUrl:String, _ trackID:String,_ imageUrl: String) { 
     self.title = title 
     self.healerName = healerName 
     self.trackUrl = trackUrl 
     self.trackID = trackID 
     self.imageUrl = imageUrl 
    } 

    static func == (lhs: Song, rhs: Song) -> Bool { 
     return lhs.title == rhs.title && 
       lhs.healerName == rhs.healerName && 
       lhs.trackUrl == rhs.trackUrl && 
       lhs.trackID == rhs.trackID && 
       lhs.imageUrl == rhs.imageUrl 
    } 
} 

extension Array where Element:Equatable { 
    func removeDuplicates() -> [Element] { 
     var result = [Element]() 

     for value in self { 
      if result.contains(value) == false { 
       result.append(value) 
      } 
     } 

     return result 
    } 
} 
+0

これを見てみましょう:https://stackoverflow.com/questions/25738817/removing-duplicate-elements-from-an-array –

+0

は、コードスニペットはあまり – danu

+1

をいただければ幸い行う方法 –

答えて

1

について異なる定義を持っている場合には2つの方法がありますSong構造体に私のUITableView

0

編集FUNC static func ==をpoplateするためにこれを使用してい

var selectedSongList : [(title: String, healerName: String, trackUrl: String, trackID: String, imageUrl: String)] = [] 

それ。あなたは構造体を作成することができ、それはハッシュ可能に確認し、この

struct Post: Hashable, Equatable { 
let id: String 
var hashValue: Int { get { return id.hashValue } } 
} 

func ==(left:Post, right:Post) -> Bool { 
return left.id == right.id 
} 

のようないくつかのことをequatable、あなたがこの

のように行うことができ、あなたのオブジェクトを削除する必要があります

ソリューション1

let uniquePosts = Array(Set(posts))

解決策2

アレイのセットを作成し、アレイに戻します。

関連する問題