2016-12-22 27 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