po prostu przeniesione nasz projekt do Swift 3 i zobaczyć wiele wypadków z powodu jednej kwestii:Swift 3 error: [_SwiftValue pointSize] wybierak nierozpoznany wysyłane do instancji
Zakończenie aplikację spowodowane nieprzechwyconego wyjątku „NSInvalidArgumentException”, rozum : - [_ SwiftValue pointSize]: nierozpoznany selektor wysyłane do instancji
przyczyną tego błędu jest wezwanie do:
[NSAttributedString(NSExtendedStringDrawing) boundingRectWithSize:options:context:]
Co zauważyłem jest to, że jeśli rzucę String do NSSt zadzwoń i zadzwoń pod numer boundingRectWithSize
, który wyrzuci ten błąd. Wydaje się, że dzieje się to również w wielu innych częściach, na przykład, jeśli wysłałem tytuł kontrolera widoku w storybooku, to powoduje to ten sam błąd.
Ktoś mający te same problemy?
odtworzyć problem:
Utwórz nowy Swift 3 projektu w Xcode 8 i dodaj następującą linię w viewDidLoad:
let attributes: [String: AnyObject?] = [
NSFontAttributeName: UIFont.systemFont(ofSize: 14)
]
let boundingRect = ("hello" as NSString).boundingRect(with: CGSize(width: 100, height: 100), options: .usesLineFragmentOrigin, attributes: attributes, context: nil)
Ale jak powiedziałem to wywala w wielu innych miejscach, jak wydaje się, że UIKit używa tej metody wewnętrznie w wielu częściach
Proszę pokazać kod powodujący problem z odpowiednimi częściami. – OOPer
Wygląda na to, że jest to związane z wewnętrzną implementacją NSString – 3lvis
Otrzymuję tę samą awarię, ale w tym przypadku: (textLabel.text! As NSString) .size (attributes: fontAttributes) Próbowałem wszystkiego, od użycia nsmutablestring, dołączając ciągi do niego itp. nadal się zawiesza. To niewątpliwie wina jabłek. Naprawdę bardzo źle. Nie można przeprowadzić migracji. – ullstrm