Tôi có một vấn đề thực sự lạ. Tôi sắp xếp một mảng các đối tượng NSDictionary trong ứng dụng của tôi, nhưng nó chỉ hoạt động chính xác khi ứng dụng đang chạy từ Xcode. Ngay sau khi tôi phân phối ứng dụng và cài đặt & chạy ứng dụng trên thiết bị, việc sắp xếp không còn hoạt động nữa.Mức tối ưu hóa nhanh chóng 'Phân tách nhanh nhất' phân loại mảng
Đây là mã có thể chạy trong một sân chơi, với một số đối tượng ví dụ NSDictionary. Mã trong ứng dụng giống nhau.
import UIKit
let p1 = NSDictionary(objects: ["Zoe", 32], forKeys: ["name", "age"])
let p2 = NSDictionary(objects: ["Adrian", 54], forKeys: ["name", "age"])
let p3 = NSDictionary(objects: ["Jeff", 23], forKeys: ["name", "age"])
let p4 = NSDictionary(objects: ["", 66], forKeys: ["name", "age"])
let p5 = NSDictionary(objects: [23], forKeys: ["age"])
let persons = [p1,p2,p3,p4,p5]
let sortedPersons = persons.sorted { (p1, p2) -> Bool in
(p2["name"] as? String) > (p1["name"] as? String)
}
Như bạn thấy, phân loại ở sân chơi không hoạt động chính xác. Có ai biết điều gì có thể sai không?
Cập nhật
tôi phát hiện ra rằng Swift Optimization Cấp gây ra vấn đề. Đặt cài đặt này thành -O
(Nhanh nhất) sẽ khiến sắp xếp thất bại. Đặt nó thành -Onone
(Không) sẽ làm cho sắp xếp hoạt động bình thường.
Có ai có bất kỳ đề xuất nào về cách thay đổi mã, do đó, nó sẽ hoạt động với tối ưu hóa -O
?
Cập nhật 2
Tôi đã đệ trình một báo cáo lỗi tại Apple. Hiện tại, tôi đang sử dụng NSSet
để sắp xếp mảng, có vẻ như hoạt động tốt.
Cập nhật lần cuối
tôi đã không thể tái sản xuất này kể từ Xcode 6.1.1
Trải nghiệm cùng một vấn đề tại thời điểm – sachadso
phiên bản nào của Xcode bạn đang sử dụng? –
Đó là XCode Beta 6.3 – sachadso