2016-08-02 20 views
8

Xcode 8 beta 4 không còn nhận ra lớp Foundation AttributedString.Sử dụng loại không khai báo 'AttributedString'

Tôi đã sao chép nó trong ví dụ này sân chơi đơn giản:

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

import Foundation 

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

Kể từ AttributedString đã có sẵn trong Xcode cũ 8 Swift 3 beta, tôi tưởng tượng đây là một lỗi Foundation mà cần phải được cố định, chứ không phải là một số lỗi mã nguồn trong Playground?

+1

tôi đừng nghĩ rằng đó là một lỗi. Tôi nghĩ rằng họ đảo ngược sự thay đổi đặt tên từ NSAttributeString-> AttributedString trở lại để sử dụng tiền tố. Có lẽ để giữ cho tiền tố NS nhất quán trong Foundation. Nói chung có nhiều thay đổi đặt tên trong phiên bản beta 4 hơn tôi mong đợi. Hầu hết là hiển nhiên, một số thì phức tạp hơn. –

+0

@MattWeinecke và @PetahChristian: sự đảo ngược thú vị từ Apple nếu đúng. Tôi không thể tìm thấy bất kỳ đề cập đến từ nó từ Xcode 8 Beta 4 ghi chú phát hành mặc dù. Tôi đã đích thân chào đón tiền tố 'NS'. Vì có quá nhiều thứ cần nhớ bây giờ: 'Dữ liệu' là một cấu trúc nhưng' NSData' là một lớp; tương tự với 'URL', v.v. –

+1

Tôi đã nghĩ rằng nó là lạ ví dụ rằng AttributedString đã giảm tiền tố nhưng không phải NSMutableAttributedString. –

Trả lời

10

Mặc dù không có giấy tờ trong ghi chú phát hành Xcode, bản cập nhật phiên bản 2 đề xuất tiến hóa Swift SE-0086 Drop NS Prefix in Swift Foundation đã thêm tiền tố "NS" vào một số lớp Foundation trước đó đã giảm tiền tố.

Lý do là như sau:

Nếu lớp được lên kế hoạch để có một giá trị kiểu tương đương trong tương lai gần, sau đó giữ tiền tố NS. Ví dụ: NSAttributedString, NSRegularExpression, NSPredicate.

Vì vậy, loại Swift AttributedString sẽ trở lại tại một số điểm, như một thời gian tiếp theo cấu trúc, thay vì là một lớp.

Có vẻ như một số cải tiến này sẽ là "vùng tập trung cho Swift 4." Bây giờ, cần phải quay lại sử dụng lớp NSAttributedString.

Nếu bạn tò mò muốn biết có bao nhiêu loại bị ảnh hưởng bởi bản cập nhật v2 SE-0086, có vẻ như các revision ảnh hưởng đến ~ 32 loại mà trước đó đã đánh rơi tiền tố NS cho Swift 3.

Các vấn đề liên quan