Phiên bản ngôn ngữ Xcode 9 Swift (SWIFT_VERSION)


115

Gần đây tôi đã cập nhật xcode lên phiên bản 9. Trước đó, trong Xcode 8.x bất cứ khi nào tôi sử dụng pod updatenó sẽ hiển thị cho tôi mã cập nhật để chuyển đổi mã sang Swift 3 và thực hiện việc đó để giải quyết các lỗi. Nhưng bây giờ nó đang cho tôi lỗi này:

Cài đặt xây dựng Phiên bản ngôn ngữ của Swift Swift (SWIFT_VERSION) phải được đặt thành giá trị được hỗ trợ cho các mục tiêu sử dụng Swift. Cài đặt này có thể được đặt trong trình chỉnh sửa cài đặt bản dựng.

Đối với lỗi này, tôi đã thử Build Settings > Swift Language Versionvà đó là Swift 3.2. phiên bản bổ sung với Xcode mới nhất? Nếu có, làm thế nào tôi có thể cài đặt Xcode 8 với Xcode 9?


hãy thử làm sạch Dữ liệu đã tạo và xây dựng dự án trên Xcode 9.
iAviator

Phiên bản nhanh chóng của bạn trong Xcode 8 là gì ??
santhoshkumar

Tôi nghĩ đó là 8.3.3. nó là cái mới nhất trước xcode 9.
Chaudhry Talha

Câu trả lời:


181

Trả lời câu hỏi của bạn:
Bạn có thể tải xuống Xcode 8.x từ Apple Download Portal hoặc Tải xuống Xcode 8.3.3 (hoặc xem: Nơi tải xuống phiên bản Xcode cũ hơn ), nếu bạn có tài khoản nhà phát triển cao cấp (id id). Bạn có thể cài đặt và làm việc với cả Xcode 9 và Xcode 8.x trong hệ thống đơn (mac). (Đảm bảo bạn đã Command Line Toolshỗ trợ cả hai phiên bản Xcode, để hoạt động với thiết bị đầu cuối (xem: Cách cài đặt 'Công cụ dòng lệnh' ))


Gợi ý: Làm thế nào để di chuyển mã của bạn Xcode 9 phiên bản Swift tương thích (Swift 3.2 hoặc 4)
Xcode 9 cho phép chuyển đổi / chuyển đổi từ Swift 3.0để Swift 3.2/4.0chỉ. Vì vậy, nếu phiên bản hiện tại của ngôn ngữ Swift của dự án của bạn dưới 3.0 thì bạn phải di chuyển mã của mình trong phiên bản tương thích Swift 3 bằng Xcode 8.x.

Đây là thông báo lỗi phổ biến mà Xcode 9 hiển thị nếu nó xác định ngôn ngữ Swift bên dưới 3.0, trong quá trình di chuyển.

nhập mô tả hình ảnh ở đây


Swift 3.2 được hỗ trợ bởi cả Xcode 9 & Xcode 8.

Dự án ► (Chọn mục tiêu dự án của bạn) ► Cài đặt bản dựng ► (Nhập 'swift' trong thanh tìm kiếm) Ngôn ngữ trình biên dịch Swift ► Phiên bản ngôn ngữ Swift ► Nhấp vào danh sách Ngôn ngữ để mở.

nhập mô tả hình ảnh ở đây



Chuyển đổi mã nguồn của bạn từ Swift 2.0 sang 3.2 bằng Xcode 8 và sau đó tiếp tục với Xcode 9 (Swift 3.2 hoặc 4).


Để di chuyển mã dễ dàng hơn, hãy làm theo các bước sau: (nó sẽ giúp bạn chuyển đổi thành phiên bản mới nhất của swift được hỗ trợ bởi Công cụ Xcode của bạn)

Xcode: Menu: Chỉnh sửa ▶ Chuyển đổi ▶ sang Cú pháp Swift hiện tại

nhập mô tả hình ảnh ở đây


9
Nếu bạn đến đây vì bạn chỉ bây giờ (tháng 12 năm 2018) quét sạch một số mã Swift 2, bạn sẽ thất vọng khi biết rằng Xcode 8 không chạy trên Mojave.
bugloaf

53

Đối với các Dự án C Mục tiêu được tạo bằng Xcode 8 và hiện đang mở trong Xcode 9, nó đang hiển thị lỗi tương tự như được đề cập trong câu hỏi.

Để khắc phục điều đó, nhấn nút + trong Cài đặt bản dựng và chọn Thêm cài đặt do người dùng xác định như trong hình bên dưới

xây dựng cài đặt

Sau đó, trong hàng mới được tạo, thêm SWIFT_VERSIONdưới dạng khóa và 3.2giá trị như bên dưới.

nhập mô tả hình ảnh ở đây

Nó sẽ sửa lỗi cho các dự án c khách quan.


2
Điều này đã giúp tôi. Cảm ơn.
Andreas Kraft

9
Nếu bạn đang gặp vấn đề này với CocoaPods, bạn có thể cần thêm cài đặt bản dựng này vào phần pods.xcodeproject.
Stewart Macdonald

1
Điều này làm việc cho tôi, tôi cũng đã phải thay đổi 'ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES' trong các thiết lập xây dựng để '$ (di truyền)
F-1

1
Cảm ơn bạn một lần nữa 2 tháng sau
ngày

1
Đánh giá cao giải pháp.
user366584

4

Tôi đã nhận được điều này sau khi tạo một dự án Objective-C mới trong Xcode 10, sau khi tôi thêm tệp mô hình Dữ liệu lõi vào dự án.

Tôi tìm thấy hai cách để khắc phục điều này:

  1. Cách dễ dàng: Mở Trình kiểm tra tệp của mô hình dữ liệu lõi ( - 1) và thay đổi ngôn ngữ từ Swift sang Objective-C

Thay đổi ngôn ngữ mô hình Dữ liệu lõi

  1. Phương pháp dài hơn và nguy hiểm hơn

Mô hình chứa tệp "nội dung" với dòng này:

<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="14460.32" systemVersion="17G5019" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">

Trong đó có một sourceLanguage="Swift"mục. Thay đổi nó sourceLanguage="Objective-C"và lỗi sẽ biến mất.

Để tìm tệp "nội dung", nhấp chuột phải vào .xcdatamodeldXcode và thực hiện "Hiển thị trong Finder". Nhấp chuột phải vào tệp thực tế (Finder) và thực hiện "Hiển thị nội dung gói"

Ngoài ra: Thay đổi ngôn ngữ của mô hình sẽ ngăn Xcode tạo các tệp lớp đối tượng được quản lý trong Swift.


1

Điều này có thể xảy ra khi bạn thêm Dữ liệu lõi vào một dự án hiện có.
Kiểm tra tệp :
<Tên> / <Tên> .xcdatamodeld / <Tên> .xcdatamodel / nội dung
.
Tệp này chứa mục nhập "sourceL Language" mà (theo mặc định) có thể đã được đặt thành "Swift". Thay đổi nó thành "Mục tiêu-C".


0

Tôi chỉ cần nhấp vào nút chuyển đổi nhanh nhất mới nhất và đặt cài đặt xây dựng mục tiêu ứng dụng-> Phiên bản ngôn ngữ Swift: swift 4.0,

Hy vọng điều này sẽ giúp.


0

Giải pháp này hoạt động khi không có gì khác hoạt động:

Tôi đã dành hơn một tuần để chuyển đổi toàn bộ dự án và đi đến một giải pháp dưới đây:

Đầu tiên, hủy tích hợp phụ thuộc cocepads từ dự án và sau đó bắt đầu chuyển đổi dự án sang phiên bản nhanh nhất mới nhất.

Chuyển đến Project Directory trong Terminal và Type:

pod deintegrate

Điều này sẽ hủy tích hợp các coca từ dự án và không còn dấu vết nào của Cốc Cốc trong dự án. Nhưng đồng thời, nó sẽ không xóa xcworkspace và podfiles. Không sao nếu họ có mặt.

Bây giờ bạn phải mở xcodeproj (không phải xcworkspace) và bạn sẽ gặp rất nhiều lỗi vì bạn đã gọi các phương thức phụ thuộc cocoapods trong các dự án chính của bạn.

Vì vậy, để loại bỏ những lỗi đó, bạn có hai lựa chọn:

  1. Nhận xét tất cả các mã bạn đã sử dụng từ thư viện cocoapods.
  2. Tạo một lớp bao bọc có các phương thức giả tương tự như thư viện cocepads, và sau đó gọi nó.

Khi tất cả các lỗi được loại bỏ, bạn có thể chuyển đổi mã sang phiên bản nhanh nhất mới nhất.

Đôi khi nếu bạn gặp phải lỗi lạ thì hãy thử làm sạch dữ liệu dẫn xuất và thử lại.


0

có lẽ bạn cần tải về toolchain. Lỗi này xảy ra khi bạn không có phiên bản đúng của trình biên dịch nhanh.


-3

Trong trường hợp của tôi, tất cả cảnh báo biến mất sau khi tôi trực tiếp thay đổi phiên bản swift từ 2.x thành 4.0 trong cài đặt bản dựng ngoại trừ hai cảnh báo.

Những cảnh báo liên quan đến myprojectnameTestsmyprojectnameUITeststhư mục. Tôi đã không chú ý và tôi nghĩ nó liên quan đến việc nhập trực tiếp từ Xcode 7 sang Xcode 9 và tôi nghĩ rằng tôi không thể giải quyết vấn đề này và tôi nên cài đặt phiên bản Xcode 8 bị bỏ lỡ.

Trong trường hợp của tôi, tôi đã xóa các thư mục này và tất cả các cảnh báo đã biến mất, nhưng bạn có thể tạo lại thư mục này và chứa bằng cách sử dụng này:

file > new > target > (uitest or unittest extensions)

và sử dụng bài viết này để tạo các trường hợp thử nghiệm: https://developer.apple.com/l Library / content / documentation / DeveloperTools / Conceptionual / testing_with_xcode / ch chương / 04-wr_tests.html


và ai đó cho tôi biết lỗi của tôi là gì!?
iman kazemayni

2
Cá nhân tôi sẽ không đánh giá thấp điều này, không có gì sai với câu trả lời của bạn, nhưng nơi tốt nhất sẽ là nhận xét về câu hỏi của OP. Ngoài ra, bạn có thể xem stackoverflow.com/help/how-to-answer sẽ giúp bạn đưa ra cách trả lời chính xác cho câu hỏi.
grassyburrito
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.