为什么我不能在 Swift 中使用数组的 append()?

Why can't I use the array's append() in Swift?

我得到一个: 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)
        }
    }
}

Append 只允许您一次添加一个对象,而 += 允许您将对象数组与另一个对象组合。当您在 setter 上调用 append 时,您是在尝试添加书籍对象数组或 [Book] 而不仅仅是单个书籍对象。

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

如果你想用append添加[newBook],你可以使用:of
1- onShelfBooks.append(contentsOf: newBook)
"contentOf" 是 Sequence.
的类型 否则使用:
2- onShelfBooks += newBook