2017-07-18 18 views
0

我曾在google上搜索過,但無法找到允許我創建所有設置圖像的庫。我想知道是否有新的圖書館存在。Swift Sets創建它們的視覺效果並在其中搜索

我的第二個問題是,在目前我做

// create sets 
var set1: Set = [2, 3, 5, 7] 
var set2: Set = [2, 3, 4, 6] 
var set3: Set = [1, 3, 8, 7] 

var new: Set = [2,3] 
var finally = [String]() 

if(new.isSubset(of:set1) 
{ 
    finally.append("set1") 
} 

if(new.isSubset(of:set2) 
{ 
    finally.append("set2") 
} 


if(new.isSubset(of:set3) 
{ 
    finally.append("set3") 
} 

打印(最終)

這是做它,一直在努力,自動化這個過程中功能的可怕的方式。我試圖創建的集列表:

var foo = [set1,set2,set3] 

與問題是,我失去了集的名字,因爲輸出

[{5,7,2,3},{6,2,4,3},{7,3,1,8}] 

因此,我決定創建一個詞典:

var baz = [ 'a': set1, 
      'b': set2, 
      'c': set3] 
//for loop through dictionary 
var finally2 = [String]() 
for(key,value) in baz { 
    if(newset.isSubset(of: value)) 
    { 
     finally2.append(key) 
    } 
    } 
    print(finally2) 

我不喜歡我的最終詞典解決方案,並想知道是否有更好的解決方案,只是使用集合。

+0

的循環怎麼樣的元組的陣列?所以你應該有'var set = [(name:「set1」,set:set1),(name:「set2」,set:set2)'',並且你可以遍歷元組您可以使用'set.name'來訪問該名稱。 – Majster

回答

1

我建議使用數組並且利用數組元素有順序的事實,如果你堅持使用集合,你可以使用與NSOrderedSet相同的解決方案,因爲集合沒有順序。

var set1: Set = [2, 3, 5, 7] 
var set2: Set = [2, 3, 4, 6] 
var set3: Set = [1, 3, 8, 7] 
var new: Set = [2,3] 

//let or:NSOrderedSet = [set1, set2, set3] // NSOrderedSet 
let ArrayOfSets: Array = [set1, set2, set3] 
let finalArry: [String] = ArrayOfSets.flatMap { 
    if new.isSubset(of: $0) { 
     let i = ArrayOfSets.index(of: $0) 
     return "Set\(String(describing: i!+1))" 
    } 
    return "" 
    }.filter{ $0 != ""} 

print(finalArry) //["Set1", "Set2"] 

你可以做同樣的課程