I’m just on fire today, aren’t I? Posted this on the wrong thread. Sorry for the noise.
Charles > On Aug 5, 2015, at 7:17 PM, Charles Srstka <cocoa...@charlessoft.com> wrote: > >> On Aug 4, 2015, at 6:23 PM, Rick Mann <rm...@latencyzero.com> wrote: >> >>> On Aug 4, 2015, at 16:22 , Quincey Morris >>> <quinceymor...@rivergatesoftware.com> wrote: >>> >>> On Aug 4, 2015, at 15:58 , Rick Mann <rm...@latencyzero.com> wrote: >>>> >>>> I'm curious why, and what the right approach might be? >>> >>> As to why, the problem is that instances of a type conforming to a protocol >>> aren’t necessarily objects. If you want them to be, try declaring your >>> protocol like this: >>> >>> protocol P: class { >>> … >>> } >> >> Awesome, thanks! > > Sorry for the delay; it took me a while to figure out why the line of code > with addObserverForName was giving wonderfully helpful errors like “‘String’ > is not convertible to ‘StringLiteralConvertible’” (grumble grumble). > > Anyway, what you want may be possible via a protocol extension: > > import Foundation > > protocol PostableEnum { > func post() > var rawValue: String { get } > } > > extension PostableEnum { > func post() { > > NSNotificationCenter.defaultCenter().postNotificationName(self.rawValue, > object: nil) > } > } > > enum SomeEnum : String, PostableEnum { > case Foo = "Foo" > } > > let someEnum = SomeEnum.Foo > > let foo = NSObject() > > let observer = NSNotificationCenter.defaultCenter().addObserverForName("Foo", > object: nil, queue: nil) { _ in > print("notification received") > } > > someEnum.post() > > CFRunLoopRun() > > Charles > _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com