2016-08-02 19 views
8

Xcode 8 Beta 4 erkennt die Foundation-Klasse AttributedString nicht mehr.Verwendung des nicht deklarierten Typs 'AttributeledString'

Ich habe es in diesem einfachen Spielplatz Beispiel wiedergegeben:

//: Playground - noun: a place where people can play 

import Foundation 

let attrStr1 = NSAttributedString() 
let attrStr2 = AttributedString() // Use of undeclared type 'AttributedString' 

Seit AttributedString bei älteren Xcode 8 Swift 3 Betas verfügbar war, ich denke, das ist ein Foundation Fehler, der behoben werden muss, anstatt einige Quellcodefehler in Playground?

+1

I glaube nicht, dass es ein Fehler ist. Ich denke, sie haben die Namensänderung von NSAttributeString-> AttributedString wieder rückgängig gemacht, um das Präfix zu verwenden. Vermutlich das NS-Präfix in Foundation konsistent zu halten. Insgesamt gibt es in Beta 4 viel mehr Namensänderungen als erwartet. Die meisten sind offensichtlich, manche sind kniffliger. –

+0

@MattWeinecke und @PetahChristian: interessante Umkehrung von Apple, wenn das stimmt. Ich finde jedoch keine Erwähnung davon aus den Xcode 8 Beta 4 Release Notes. Ich würde persönlich das Präfix "NS" zurückgeben. Es gibt zu viele Dinge, an die man sich jetzt erinnern sollte: 'Data' ist eine Struktur, aber' NSData' ist eine Klasse; Gleiches mit 'URL', etc. –

+1

Ich dachte, dass es merkwürdig war, dass zum Beispiel AttributedString das Präfix, aber nicht NSMutableAttributedString weggelassen hatte. –

Antwort

10

Obwohl in den Xcode-Versionshinweisen undokumentiert, hat ein Update der Version 2 auf den Swift-Entwicklungsvorschlag SE-0086 Drop NS Prefix in Swift Foundation das Präfix "NS" mehreren Foundation-Klassen hinzugefügt, die zuvor das Präfix weggelassen haben.

Der Grund hierfür ist wie folgt:

Wenn die Klasse einen Wert-Typ-Äquivalent in der nahen Zukunft haben geplant, dann die NS-Präfix zu halten. Beispiele: NSAttributedString, NSRegularExpression, NSPredicate.

So ist der Swift AttributedString Typ wird bei einige Punkt zurückkommen, als eine Struktur zum nächsten Mal, statt eine Klasse zu sein.

Es klingt wie einige dieser Verbesserungen "ein Schwerpunkt für Swift 4 sein wird." Vorerst ist es notwendig, wieder auf die Klasse NSAttributedString zurückzugreifen.

Wenn Sie neugierig sind zu wissen, wie viele Arten durch die SE-0086 v2 Update betroffen waren, sieht es aus wie die revision wirkt ~ 32 Typen, die das NS-Präfix für Swift fallen gelassen hatte zuvor 3.

Verwandte Themen