Tôi đang cố gắng xây dựng hệ thống tự động sửa lỗi, vì vậy tôi cần có thể xóa từ cuối cùng được nhập và thay thế bằng từ đúng. Giải pháp của tôi:Xóa từ cuối cùng khỏi chuỗi trong Swift
func autocorrect() {
hasWordReadyToCorrect = false
var wordProxy = self.textDocumentProxy as UITextDocumentProxy
var stringOfWords = wordProxy.documentContextBeforeInput
fullString = "Unset Value"
if stringOfWords != nil {
var words = stringOfWords.componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
for word in words {
arrayOfWords += [word]
}
println("The last word of the array is \(arrayOfWords.last)")
for (mistake, word) in autocorrectList {
println("The mistake is \(mistake)")
if mistake == arrayOfWords.last {
fullString = word
hasWordReadyToCorrect = true
}
}
println("The corrected String is \(fullString)")
}
}
Phương pháp này được gọi sau mỗi lần nhấn phím và nếu không gian được nhấn, nó sẽ sửa từ đó. Vấn đề của tôi xuất hiện khi chuỗi văn bản dài hơn khoảng 20 từ. Phải mất một lúc để nó lấp đầy mảng mỗi khi một ký tự được nhấn, và nó bắt đầu tụt hậu đến một điểm không thể sử dụng nó. Có cách nào Swift hiệu quả và thanh lịch hơn để viết chức năng này không? Tôi đánh giá cao sự giúp đỡ nào!
Đặng ! Bạn đã đơn giản hóa tất cả mã của tôi thành 3 dòng và nó hoạt động tốt hơn nhiều! Tôi sẽ giữ cho trang mở trong trường hợp bạn nghĩ nhiều hơn, nhưng đến bây giờ tôi không có vấn đề với độ trễ trong một đoạn lớn mà tôi đã gõ. Điều duy nhất tôi lo lắng là, từ điển của tôi mà nó kiểm tra chỉ dài khoảng 10 từ vì nó là một bài kiểm tra trước khi tôi lập danh sách đầy đủ. Bạn có nghĩ mã này sẽ vẫn hiệu quả không khi danh sách các từ được lâu hơn nhiều? – SomeGuy
@SomeGuy - Từ điển được thiết kế để được tối ưu hóa, do đó, tra cứu không nên hạn chế hiệu suất quá nhiều. Với điều đó đang được nói, có một từ điển rất lớn và xử lý với mỗi đột quỵ quan trọng có thể hiển thị một số hit hiệu suất. Tôi không thể tìm thấy bất kỳ điểm chuẩn nhanh chóng nào từ việc tìm kiếm xung quanh nên tôi thực sự không thể nói chắc chắn. – Logan
Có cách nào hiệu quả hơn bạn có thể nghĩ đến để tạo hệ thống tự động sửa không? Tôi vừa mới tạo cặp giá trị quan trọng cho những thứ như người nhận là chìa khóa và có giá trị, vì vậy nếu người dùng nhập theee, nó sẽ thay đổi ở đó. – SomeGuy