Использование необъявленного типа AttributedString

Xcode 8 beta 4 больше не распознает базовый класс 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 ответ

Решение

Несмотря на то, что в примечаниях к выпуску XCode это не описано, обновление версии 2 для предложения по развитию Swift SE-0086 Префикс Drop NS в Swift Foundation добавил префикс "NS" обратно к нескольким классам Foundation, которые ранее отбрасывали префикс.

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

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

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

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

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

Другие вопросы по тегам