Xcode 8 beta 4 no longer recognizes Foundation class
I’ve reproduced it in this simple playground example:
//: Playground - noun: a place where people can play import Foundation let attrStr1 = NSAttributedString() let attrStr2 = AttributedString() // Use of undeclared type 'AttributedString'
AttributedString was available in older Xcode 8 Swift 3 betas, I imagine this is a
Foundation bug that needs to be fixed, rather than some source code error in Playground?
Although undocumented in the Xcode release notes, a version 2 update to Swift evolution proposal SE-0086 Drop NS Prefix in Swift Foundation has added the “NS” prefix back to several Foundation classes which previously dropped the prefix.
The reason is as follows:
If the class is planned to have a value-type equivalent in the near future, then keep the NS prefix. Examples: NSAttributedString, NSRegularExpression, NSPredicate.
So, the Swift
AttributedString type will return at some point, as a struct next time, instead of being a class.
It sounds like some of these improvements will be “a focus area for Swift 4.” For now, it’s necessary to revert back to using the
If you’re curious to know how many types were affected by the SE-0086 v2 update, it looks like the revision affects ~32 types which had previously dropped the NS prefix for Swift 3.