Vấn đề là có hai phương pháp. Một là removeAnnotation mà mất một đối tượng MKAnnotation, và khác là removeAnnotations mà mất một mảng của MKAnnotations, lưu ý "s" ở cuối của một và không phải là khác. Cố gắng truyền từ [MKAnnotation]
, một mảng đến MKAnnotation
một đối tượng hoặc ngược lại sẽ làm hỏng chương trình. Dòng mã self.mapView.annotations tạo một mảng. Vì vậy, nếu bạn đang sử dụng phương pháp removeAnnotation, bạn cần phải chỉ số mảng cho một đối tượng duy nhất trong mảng, như bên dưới:
let previousAnnotations = self.mapView.annotations
if !previousAnnotations.isEmpty{
self.mapView.removeAnnotation(previousAnnotations[0])
}
Vì vậy, bạn có thể loại bỏ các chú thích khác nhau trong khi vẫn giữ vị trí người sử dụng. Bạn nên luôn luôn kiểm tra mảng của bạn trước khi cố gắng để loại bỏ các đối tượng từ nó, khác có thể có được một trong giới hạn hoặc lỗi nil.
Lưu ý: sử dụng phương thức removeAnnotations (với một s) sẽ xóa tất cả chú thích. Nếu bạn đang nhận được một con số không, điều đó ngụ ý rằng bạn có một mảng trống. Bạn có thể xác minh điều đó bằng cách thêm một câu lệnh khác sau if, như vậy;
else{print("empty array")}
Đã làm việc tuyệt vời! Cảm ơn bạn! – user4812000