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

Reply via email to