I meant to add: I implemented it based on the declaration of popLast().

> On Sep 15, 2017, at 13:05 , Roderick Mann via swift-users 
> <swift-users@swift.org> wrote:
> 
> 
>> On Sep 13, 2017, at 18:59 , Jon Shier <j...@jonshier.com> 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.
> 
> extension
> Array
> {
>       public
>       mutating
>       func
>       popFirst()
>               -> Array.Element?
>       {
>               if self.count > 0
>               {
>                       return self.removeFirst()
>               }
>               
>               return nil
>       }
> }
> 
>> 
> 
>> 
>> 
>> Jon
>> 
>> 
>>> On Sep 13, 2017, at 9:47 PM, Zhao Xin via swift-users 
>>> <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> 
>>> 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> 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> 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
>>>> 
>>> 
>>> 
>>> --
>>> Rick Mann
>>> rm...@latencyzero.com
>>> 
>>> 
>>> 
>>> _______________________________________________
>>> swift-users mailing list
>>> swift-users@swift.org
>>> https://lists.swift.org/mailman/listinfo/swift-users
>> 
> 
> 
> -- 
> Rick Mann
> rm...@latencyzero.com
> 
> 
> _______________________________________________
> swift-users mailing list
> swift-users@swift.org
> https://lists.swift.org/mailman/listinfo/swift-users


-- 
Rick Mann
rm...@latencyzero.com


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

Reply via email to