【问题标题】:Why can't I use the array's append() in Swift?为什么我不能在 Swift 中使用数组的 append()?
【发布时间】:2015-09-09 20:49:34
【问题描述】:
我得到一个:Cannot invoke 'append' with an argument list of type '([Book])' 如果我使用+=,它可以找到,但我不明白为什么append() 不起作用。
struct Book
{
var title:String
var pageCount:Int
}
class Library
{
var onShelfBooks:[Book] = []
var onLoanBooks:[Book] = []
var books:[Book]
{
get
{
return onShelfBooks + onLoanBooks
}
set(newBook)
{
onShelfBooks.append(newBook)
}
}
}
【问题讨论】:
标签:
arrays
swift
struct
append
【解决方案1】:
Append 只允许您一次添加一个对象,而 += 允许您将一组对象与另一个对象组合。当您在 setter 上调用 append 时,您正在尝试添加书籍对象数组,或 [Book] 而不仅仅是单个书籍对象。
【解决方案2】:
struct Book
{
var title:String
var pageCount:Int
}
class Library
{
var onShelfBooks:[Book] = []
var onLoanBooks:[Book] = []
var books:[Book]
{
get
{
return onShelfBooks + onLoanBooks
}
set(newBook)
{
onShelfBooks.append(newBook[0])
}
}
}
var myLibrary = Library()
var newBook = Book(title: "Swift Development with Cocoa", pageCount: 453)
myLibrary.books = [newBook]
myLibrary.books
【解决方案3】:
如果您想通过 append 添加 [newBook],您可以使用 : of
1- onShelfBooks.append(contentsOf: 新书)
“contentOf”是序列的类型。
否则使用:
2- onShelfBooks += newBook