> On Sep 11, 2016, at 6:12 PM, Tanner Nelson via swift-users > <swift-users@swift.org> wrote: > > Hey Swift Users, > > I was wondering how you all work around not being able to add stored > properties in extensions (especially protocol extensions). > > I ran into an issue recently where I needed an internal stored variable for a > protocol, but I didn't want the conformer to worry about implementing the > variable. > > I ended up using something like this to achieve the effect. > > extension MyProtocol { > private var address: String { > mutating get { > var id = "" > withUnsafePointer(to: &self) { id = "\($0)"} > return id
BTW, you can write `return withUnsafePointer(to: &self) { "\($0)" }` instead. > } > } > > var myStoredVar: Bool { > mutating get { > return _storage[address] ?? false > } > set { > _storage[address] = newValue > } > } > } > > Obviously not ideal, but I don't see another way to achieve this besides > subclassing (which has its own problems for my situation). > > Wondering if anyone has run into this and come up with a better solution or > other type of work around. I don't have a better answer to this part. This particular solution only works if it is ok for `_storage[address]` to potentially be reused by a new instance, though (if the old instance is deallocated and the new one is allocated in its place). - Daniel > > Thanks! > Tanner > _______________________________________________ > 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