2016-12-19 8 views
2

私はこのviewDidLoad()ユーザーの選択に応じて配列を結合する方法は?

if let bTitle = result.value(forKey: "bookTitle") as? String 
{ 
    bookArr.append(bTitle) 

} 
if let cNo = result.value(forKey: "chpNo") as? [Int] 
{ 
    chptArr.append(cNO) 
} 
print(chptSelected) 

に、私はこの

を取得していますしている私は、この

struct bookChpt { 
    var book:[String] = [] 
    var chapter:[[Int]] = [] 
} 

let chptSelected = [bookChpt(book:bookArr,chapter:chptArr)] 

var bookArr:[String] = [] 
var chptArr:[[Int]] = [] 

をやったユーザーブックの名前のように選択し、そのassocaited章

見たいです

bookChpt(書籍:["Hobbit"、 "LOTR"]、章:[[3,5]、4])

が、私はこの

見たい[ "ホビット" を、3、5]、[ "LOTR" は、4]

+0

FWIW開発者は通常、bookArrayまたはArrayOfBooksを避けるため、彼らは通常、ちょうど本がちょうど複数を使用すなわちんあなたは英語 – Honey

+0

@Honeyを読んでいるかのように、それはより多くなり、あなたのアドバイスに感謝 – Coder221

答えて

3

いくつかの可能性があります。

struct BookChapter { 
    var book:[String] = [] 
    var chapter:[[Int]] = [] 

    func display() -> [[Any]] { 
     var output = [[Any]]() 
     for i in 0..<book.count { 
      output.append([book[i], chapter[i]]) 
     } 
     return output 
    } 
} 

それとも、タプルとして書籍や章を含むように構造体の構造を変更できます:あなたが望む方法でその内容を表示するには、構造体に機能を追加することができ

struct BookChapter { 
    var book:[(String, [Int])] 
} 

このよう上記表示機能のように - - ビットさらに行く、どこでも、あなたはループを参照してください、あなたも同じことを達成するためにmapを使用して検討するかもしれない:

func display() -> Any { 
    return book.enumerated().map { $0.element + " " + chapter[$0.offset].description } 
} 
+0

を動作しません。それらをタプルとして含むように修正してください。そして、chptSelectedは何になるでしょうか? – Coder221

+0

bookChpt(book:[( "Hobbit"、[3、5])、( "LOTR"、[4])])、あなたが求めた答えは間違いありません。出力をより細かく制御したい場合は、答えの最初の部分でもっとうまくいくかもしれませんし、私の例ではグループではなく、個々の章を個別に扱う内部ループを追加してください。 –

+0

ええ、最初の部分は私の問題を解決しました。ありがとう – Coder221

0

変更し、あなたのstruct

struct BookChapt { 
    var book: String = "" 
    var chapter: [Int] = [] 
} 

およびviewDidLoad()

+0

私ならばこれは – Coder221

1

このようなディクショナリを使用する場合は、キーと値を印刷して、必要な方法で値を入力できます。

var bookChapters = [String: [Int]]() 

bookChapters["Hobbit"] = [1,2,3] 
bookChapters["Hobbit"]?.append(contentsOf: [4]) 


for (book, chapter) in bookChapters { 
    print("\(book): \(chapter)") 
} 
関連する問題