Not sure why it is happening, but given below are my observations:

Simplified version:

var array = [1, 2, 3, 4, 5]
_ = array.popFirst() //error: cannot use mutating member on immutable value: 
'array' is immutable
_ = array.popLast() //works ok

popFirst is not available in the Array documentation and “Jump to Definition” 
doesn’t seem to work.

Thanks and regards,
Muthu


> On 14 Sep 2017, at 9:59 AM, Jon Shier via swift-users <swift-users@swift.org> 
> wrote:
> 
>       I think there’s something strange with popFirst. It doesn’t show up in 
> the autocomplete in Xcode, but it compiles, and popLast doesn’t throw the 
> same error. removeFirst doesn’t either, though it’s unsafe. Weird.
> 
> 
> 
> Jon
> 
> 
>> On Sep 13, 2017, at 9:47 PM, Zhao Xin via swift-users <swift-users@swift.org 
>> <mailto:swift-users@swift.org>> wrote:
>> 
>> I begin to think it is related to how you `popFirst()` implemented. Check it 
>> or post it here.
>> 
>> Zhao Xin
>> 
>> On Thu, Sep 14, 2017 at 9:36 AM, Roderick Mann <rm...@latencyzero.com 
>> <mailto:rm...@latencyzero.com>> wrote:
>> Yeah, that's not it. I made the change you suggested, I get the same error.
>> 
>> > On Sep 13, 2017, at 18:11 , Zhao Xin <owe...@gmail.com 
>> > <mailto:owe...@gmail.com>> wrote:
>> >
>> > 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 <mailto: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 <mailto:rm...@latencyzero.com>
>> >
>> >
>> > _______________________________________________
>> > swift-users mailing list
>> > swift-users@swift.org <mailto:swift-users@swift.org>
>> > https://lists.swift.org/mailman/listinfo/swift-users 
>> > <https://lists.swift.org/mailman/listinfo/swift-users>
>> >
>> 
>> 
>> --
>> Rick Mann
>> rm...@latencyzero.com <mailto:rm...@latencyzero.com>
>> 
>> 
>> 
>> _______________________________________________
>> swift-users mailing list
>> swift-users@swift.org <mailto: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

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to