Tôi vừa di chuyển dự án của mình từ Swift 2.2 lên Swift 3.0 với phiên bản Xcode 8 beta.Lỗi trình biên dịch "Sử dụng tiền tố mơ hồ" với Swift 3
Tôi có một cái gì đó tương tự như đoạn mã sau (bạn có thể dán vào một sân chơi):
import Foundation
let datesWithCount: [(Date, Int)] = [(Date(), 1), (Date(), 2), (Date(), 3)]
let dates: [Date] = datesWithCount.sorted {
$0.0 < $1.0
}.prefix(1).map {
return $0.0
}
Trong Swift 2.2 này được biên soạn tốt. Tuy nhiên, với Swift 3.0 Tôi nhận được lỗi
sử dụng mơ hồ của 'prefix'
Cách duy nhất để có được điều này để biên dịch trong Swift 3.0 là để tách ra bản đồ thành một dòng riêng biệt:
let sortedDatesWithCount = datesWithCount.sorted {
$0.0 < $1.0
}.prefix(1)
let mappedDates = sortedDatesWithCount.map {
return $0.0
}
BTW, trong đoạn code thực tế tôi đang trở về NSNotification
đối tượng từ map
không Date
s nhưng lỗi là như nhau. Tôi chỉ sử dụng Date
ở đây để làm ví dụ đơn giản.
Có cách nào để làm điều này để biên dịch như một lớp lót không?
CẬP NHẬT: Đã tạo JIRA cho dự án Swift.
Ngày tuân theo giao thức So sánh trong Swift 3. 'được sắp xếp {$ 0.0 <$ 1.0}' phải đủ –
Cảm ơn, tôi không biết. Đó là tin rất tốt! // Tôi chỉ sử dụng mã của OP và họ nói Date chỉ là một ví dụ. :) – Moritz
Trông giống như một lỗi suy luận kiểu cho tôi. Tôi sẽ báo cáo nó như vậy. @LeoDabus cảm ơn về mẹo sắp xếp Ngày. Mã thực sự cũng đang phân loại vào ngày tháng. Ví dụ bit là trở về Ngày từ bản đồ. – mluisbrown