Неизменное значение типа "ShopDisplay" имеет только мутирующие элементы с именем "setAllShopItems"
Я пытаюсь установить свойство массива, которое является var, а не let. Обратите внимание на setAllShopItems
метод:
struct ShopDisplay {
private var allShopItemCategories: [ShopItemCategory]
private var currentShopItemCategory: ShopItemCategory
private var shopItemCategoryIcon: MMImageView
private var currentShopItemGender: Gender
private var allShopItems: [ShopItem]
private var allDisplayedShopItems: [ShopItem]
init() {
allShopItemCategories = [ShopItemCategory]()
currentShopItemCategory = ShopItemCategory(rawValue: "TO")!
shopItemCategoryIcon =
MMImageView(frame: CGRect(x: 0, y: 0, width: 0, height: 0))
currentShopItemGender = .Female
allShopItems = []
allDisplayedShopItems = []
}
mutating func setShopItemsToDisplay() {
allDisplayedShopItems.removeAll()
for item in self.allShopItems {
let itemCategory = item.object["category"] as! String
if itemCategory == currentShopItemCategory.rawValue {
allDisplayedShopItems.append(item)
}
}
}
mutating func setAllShopItems(shopItems: [ShopItem]) {
self.allShopItems = shopItems
}
Я называю это setAllShopItems()
метод вроде так:
override func prepareForSegue( segue: UIStoryboardSegue,
sender: AnyObject?) {
if (segue.identifier == "dressingRoom") {
let dressingRoomViewController = segue.destinationViewController
as! DressingRoomViewController
dressingRoomViewController.getShopDisplay().setAllShopItems(self.allShopItems)
dressingRoomViewController.getShopDisplay().setAllShopItemCategories(
self.categories)
}
}
свойство, возвращаемое getShopDisplay, также является переменной:
class DressingRoomViewController: UIViewController,
UICollectionViewDelegateFlowLayout,
UICollectionViewDataSource
{
@IBOutlet weak var collectionView: UICollectionView!
@IBOutlet weak var heightConstraint: NSLayoutConstraint!
private let identifier = "cellIdentifier"
private let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
private let cellSpacing: CGFloat = 5
private let cellsPerRow: CGFloat = 5
private var cellSize: CGFloat = 0.00
private var shopDisplay = ShopDisplay()
@IBOutlet weak var categoryIcon: MMImageView!
func getShopDisplay() -> ShopDisplay {
return self.shopDisplay
}
Так что, если все эти переменные устанавливаются как переменные, и я использую ключевое слово mutating
всякий раз, когда я устанавливаю их, если они struct
s, как я все еще получаю эту ошибку?:
/Users/Ben/Documents/Development/MirrorMirror/MirrorMirror/ChooseShopViewController.swift:40:44: неизменное значение типа "ShopDisplay" имеет только изменяющиеся члены с именем "setAllShopItems"