Change `self` to `ModelFetcher`. You are calling a class static property, not a class instance property.
Zhao Xin On Thu, Sep 14, 2017 at 8:37 AM, Rick Mann via swift-users < swift-users@swift.org> wrote: > Moving to Swift 4, I'm running into an issue for which I can't seem to > find an answer in google: > > "Cannot use mutating member on immutable value: 'self' is immutable" > > The code looks like: > > class > ModelFetcher : NSObject, URLSessionDelegate > { > ... > static let managerDispatchQueue = > DispatchQueue(label: "Model Download Manager Queue") > static var pendingFetchers = > [ModelFetcher]() > static var currentFetcher: ModelFetcher? > > class > func > startNextFetcher() > { > self.managerDispatchQueue.async > { > guard > self.currentFetcher == nil, > let mf = self.pendingFetchers.popFirst() > ~~~~ ^ error: cannot > use mutating member on immutable value: 'self' is immutable > else > { > return > } > > self.currentFetcher = mf > mf.start() > } > } > ... > } > > This code compiled fine in Xcode 8, or in Xcode 9/Swift 3.2 as a > monolithic app (the error shows up when this code is factored into a > framework). Other mutating references to self seem to compile okay (e.g. > "self.currentFetcher = nil" or "self.pendingFetchers.remove(at: idx)"). > Not sure what's special about this one. > > > -- > Rick Mann > rm...@latencyzero.com > > > _______________________________________________ > swift-users mailing list > swift-users@swift.org > https://lists.swift.org/mailman/listinfo/swift-users >
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users