Hi Somu, You can certainly file a bug for us. It may be something we are already tracking or already fixed, but the bug report will let us double check that.
Thanks, - Tony > On Jun 13, 2017, at 12:33 PM, somu subscribe via swift-users > <swift-users@swift.org> wrote: > > Thanks a lot Jordan for pointing out the root cause. > > The underlying executing and finished properties are readonly properties. > > For an Asynchronous operation I had to override it tell when the asynchronous > operation completes. > > Since they are readonly properties I am unable to call the super on them to > set values. > > I can still use String, was just wondering if there was a way to do it using > KeyPath. It is more out of enthusiasm to try out the KeyPath feature in the > project :) > > Would it be appropriate to file a bug report for the implementation of > Operation ? > > Thanks and regards, > Muthu > > > >> On 14 Jun 2017, at 1:32 AM, Jordan Rose <jordan_r...@apple.com >> <mailto:jordan_r...@apple.com>> wrote: >> >> Hi, Muthu. This is a longstanding issue with Operation—the Objective-C name >> of the property is just "executing", but the KVO keys that the implementors >> used is "isExecuting". Swift isn't set up to deal with this difference. >> >> Fortunately, the base implementation of Operation already knows how to send >> the KVO notifications, so you shouldn't have to override these properties at >> all. If you still want to for some other reason, you can call super instead >> of storing to a private property. >> >> Hope that helps, >> Jordan >> >> >>> On Jun 13, 2017, at 06:40, somu subscribe via swift-users >>> <swift-users@swift.org <mailto:swift-users@swift.org>> wrote: >>> >>> Hi, >>> >>> I am having trouble using KeyPath to KVC (Key Value Code) in Swift 4. >>> >>> I have a subclass of Operation and I am overriding the isFinished and >>> isExecuting property. >>> >>> Problem: >>> - When I use KeyPath, the completionBlock of the operation is not invoked. >>> - However when I use String instead of KeyPath, the completionBlock is >>> invoked. >>> >>> Questions: >>> - Am I missing something ? >>> - Is there a way to fix it using KeyPath ? >>> >>> Code: >>> >>> override var isExecuting : Bool { >>> >>> get { >>> return _executing //property in the class >>> } >>> >>> set { >>> willChangeValue(for: \.isExecuting) >>> _executing = newValue >>> didChangeValue(for: \.isExecuting) >>> } >>> } >>> >>> override var isFinished : Bool { >>> >>> get { >>> return _finished //property in the class >>> } >>> >>> set { >>> willChangeValue(for: \.isFinished) >>> _finished = newValue >>> didChangeValue(for: \.isFinished) >>> } >>> } >>> >>> >>> Configuration: >>> - Xcode - 9.0 beta (9M136h) >>> - Tested on Simulator (iOS 11) >>> - macOS Sierra - 10.12.5 (16F73) >>> >>> >>> Thanks and Regards, >>> Muthu >>> _______________________________________________ >>> 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> >> > > _______________________________________________ > 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