> 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