为什么我不能在 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
我得到一个: 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