2016-08-02 5 views
8

Xcode 8 beta 4 больше не распознает класс Foundation AttributedString.Использование незаявленного типа 'AttributedString'

Я воспроизводил его в этом простом примере детской площадки:

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

import Foundation 

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

С AttributedString был доступен в более старшем Xcode 8 Swift 3 беты, я полагаю, что это Foundation ошибка, которая должна быть исправлена, а не какой-то ошибка исходного кода в Playground?

+1

I не думайте, что это ошибка. Я думаю, что они изменили изменение имен от NSAttributeString-> AttributedString, чтобы использовать префикс. Предположительно, чтобы префикс NS был согласован в Foundation. В целом в бета-версии 4 больше изменений названия, чем я ожидал. Большинство из них очевидны, некоторые из них сложнее. –

+0

@MattWeinecke и @PetahChristian: интересный откат от Apple, если это правда. Однако я не могу найти упоминания об этом из примечаний к выпуску Xcode 8 Beta 4. Я лично приветствовал бы префикс 'NS'. Поскольку сейчас осталось слишком много вещей: «Данные» - это структура, но «NSData» - это класс; то же самое с «URL» и т. д. –

+1

Я подумал, что это было странно, например, что AttributedString удалил префикс, но не NSMutableAttributedString. –

ответ

10

Несмотря на недокументированные примечания к выпуску Xcode, обновление версии 2 для предложения эволюции Swift SE-0086 Drop NS Prefix in Swift Foundation добавило префикс «NS» к нескольким классам Foundation, которые ранее удаляли префикс.

Причина заключается в следующем:

Если класс планируется иметь значение типа эквивалент в ближайшем будущем, а затем сохранить префикс NS. Примеры: NSAttributedString, NSRegularExpression, NSPredicate.

Так, тип Swift AttributedString вернется в некоторые точки, как структура в следующий раз, вместо того, чтобы быть классом.

Похоже, что некоторые из этих улучшений будут «областью фокусировки для Swift 4.» На данный момент необходимо вернуться к использованию класса NSAttributedString.

Если вам интересно знать, сколько видов были затронуты обновления SE-0086 v2, это выглядит как revision влияет на ~ 32 типа, которые ранее упали префикс NS для Swift 3.

Смежные вопросы