2016-11-09 16 views
0

テーブルにセクションを追加しようとしていますが、MutableArray(60個の値を含む私のdatabase) a dictionary。 アルファベットsectionsを、最初の文字をヘッダーに、セクションの行数をその文字で始まるすべての値として作成したいとします。swiftを使用してMutableArrayのヘッダーでTableViewにアルファベットセクションを作成する方法3

私のコード:

func getSectionsFromData() -> Dictionary<Character,String> { 

    var sectionDictionary = Dictionary<Character, String>() 

    let crime: CrimesInfo = marrCrimesNames.object(at: 0) as! CrimesInfo 
    var crimeFirstLetter: AnyObject 
    let crimeName = crime.Name 

    for crime in marrCrimesNames { 
     crimeFirstLetter = crimeName.characters.first! as AnyObject 
     print(crimeFirstLetter) 
    } 
    return sectionDictionary 
} 

出力:

"A" // 60回

+2

ソートされたTableViewの場合、(myDataArray = [{"A":[item1、item2]、 "B":[item4、item5、item6 ] ...}] 'であり、カウントについては'(myDataArray [indexPath.section] as array).count'を取得するだけです。 – Larme

+0

私はこの方法を知っていると私はそれが動作すると確信していますが、私は私のMutableArrayからそれを得ることができる場合、60の値が不要な仕事のように思われる –

答えて

4

for crime in marrCrimesNames { 
    crimeFirstLetter = crimeName.characters.first! as AnyObject 
    print(crimeFirstLetter) 
} 

ではあなたが実際に代わりcrime変数 を使用していませんcrimeNameしか使用していないため、いつも "A"を得ている。

:あなたはこのコードを使用することができます

let array = ["Aname1", "Aname2", "Aname3", "Bname1", "Bname2", "Bname3"] 

:このような配列から

let dict = ["A" : ["Aname1", "Aname2", "Aname3"], "B" : ["Bname1", "Bname2", "Bname3"]] 

ではなく、今

for crime in marrCrimesNames { 
    crimeFirstLetter = crime.Name.characters.first! as AnyObject 
    print(crimeFirstLetter) 
} 

は、このような辞書を作成してみます
let dict = ["A" : ["Aname1", "Aname2", "Aname3"], "B" : ["Bname1", "Bname2", "Bname3"]] 

let characters = Array(Set(array.flatMap({ $0.characters.first }))) 

var result = [String: [String]]() 

for character in characters.map({ String($0) }) { 
    result[character] = array.filter({ $0.hasPrefix(character) }) 
} 

print(result) // output: ["B": ["Bname1", "Bname2", "Bname3"], "A": ["Aname1", "Aname2", "Aname3"]] 
+0

ありがとう!出来た!今私は辞書にすべての値を取得し、同じ文字で始まる単語と一致させる必要があります。あなたはそれで私を助けることができますか? –

+0

正確に何が必要ですか?このような辞書を作成するには? 'let Dict = [" A ":[" Aname1 "、" Aname2 "、" Aname3 "]、" B ":[" Bname1 "、" Bname2 "、" Bname3 "]]' –

+0

私は私のMutableArrayからそれが必要です。例:MutableArray = [Aname1、Aname2、Bname1、Bname2、Cname]私はそれをdictに保存する必要があります –

関連する問題