2016-12-22 28 views
0

我有一個類型的變量string, [int], bool如何根據條件存儲數組值?

var books:[String] = ["Hobbit","LOTR","Fellowship"] 
var chaptersToRead:[[Int]] = [[1],[1,3],[2,3]] 
var read:[Bool] = [false,true,true] 

我有功能display(),這樣我可以看到所有的書細節單獨

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

我喜歡根據病情存儲在兩個數組的書籍值if chaptersToRead = 1,如下

var booksAssigned:[String] = ["Hobbit","LOTR"] 

var readStatus:[Bool] = [false,true] 

我試圖讓上述結果b Ÿ正在執行以下以下不起作用的內容。我究竟做錯了什麼?

var booksAssigned:[String] = [] 
var readStatus:[Bool] = [] 

for (index, books) in display().enumerated() 
{ 
    if chaptersToRead.joined().contains(1) 
    { 
    //I am getting signal SIGABRT error here 
    booksAssigned = books as! [String] 
    } 
} 

for (index, status) in display().enumerated() 
{ 
    if chaptersToRead.joined().contains(1) 
    { 
     //I am getting signal SIGABRT error here 
     readStatus = status as! [Bool] 
    } 
} 
+1

這是一個不適當的數據結構 - 您應該使用結構數組來代替。 – Hamish

+0

嘗試使用結構作爲數據類型:結構圖書{ 讓名:字符串 VAR章節:[INT] VAR isRead:BOOL } –

+0

所以我應該用結構來開始? – Coder221

回答

2

試試這個:

var booksAssigned:[String] = [] 
var readStatus:[Bool] = [] 

for (index, chapters) in chaptersToRead.enumerated() { 
    if chapters.contains(1) { 
     booksAssigned.append(books[index]) 
     readStatus.append(read[index]) 
    } 
} 

print(booksAssigned) 
print(readStatus) 

編輯:編輯按@Nirav D的建議。

+0

欣賞它,可以解決問題 – Coder221

+2

@ Coder221不需要創建第二個循環的章節,您可以簡單地使用'if chap.contains(1)'來追加數組。 –

+1

@NiravD,感謝您的建議,工作 – Coder221

1

從if塊中刪除var關鍵字。您已經聲明瞭這些變量。

var booksAssigned:[Any] = [] 
var readStatus:[Any] = [] 

for (index, books) in display().enumerated() 
{ 
    if chaptersToRead.joined().contains(1) 
    { 
     booksAssigned = books 
    } 
} 

for (index, status) in display().enumerated() 
{ 
    if chaptersToRead.joined().contains(1) 
    { 
     readStatus = status 
    } 
} 

This works。

+0

同樣的錯誤說執行中斷 – Coder221

+0

我編輯了評論。 – Macple

+0

這不起作用 – Coder221