X
entre los corchetes en esta línea si has hecho todo lo siguiente:input-mask
StackOverflow para problemas similares.Noté que después de usar ViewController que usaba un TextField utilizando la máscara de entrada, la aplicación fallaba. Esto fue extraño ya que la página exacta funcionó el día anterior y no había realizado ningún cambio en ese controlador de vista o interfaz de usuario en el guión gráfico: el único cambio que hice fue en mi entorno: había creado la aplicación con xCode 10 Beta 2 para poder ejecutar / probar la aplicación en mi iPhone que está ejecutando la versión beta de iOS 12.2 Developer beta 2. Decidí construir un nuevo controlador de vista al traer todos los controles de la página actual uno por uno y ver cuándo se rompe: solo se rompió en el momento en que agregué los objetos delegados de InputMask.
Tener una página con una configuración InputMask Textfield: compile la aplicación para iOS 12.2 Developer beta 2 (usando xCode 10 beta 2)
Comportamiento esperado
Funciones de máscara de entrada
Comportamiento real
La aplicación se bloquea: se produce un error:
Terminating app due to uncaught exception 'NSGenericException', reason: 'This coder requires that replaced objects be returned from initWithCoder:'
Ese es el núcleo del problema, sin embargo, el resto de la pila de llamadas de error se puede encontrar aquí:
*** First throw call stack:
(
0 CoreFoundation 0x0000000108ca072b __exceptionPreprocess + 331
1 libobjc.A.dylib 0x000000010768eac5 objc_exception_throw + 48
2 CoreFoundation 0x0000000108ca0585 +[NSException raise:format:] + 197
3 UIFoundation 0x000000010f47e89c UINibDecoderDecodeObjectForValue + 827
4 UIFoundation 0x000000010f47eaf9 UINibDecoderDecodeObjectForValue + 1432
5 UIFoundation 0x000000010f47e554 -[UINibDecoder decodeObjectForKey:] + 251
6 UIKitCore 0x0000000111825e90 -[UIViewController initWithCoder:] + 1021
7 DumaPay Consumer iOS 0x00000001055bde66 $s20DumaPay_Consumer_iOS25TestAddCardViewControllerC5coderACSgSo7NSCoderC_tcfc + 2214
8 DumaPay Consumer iOS 0x00000001055bdf2f $s20DumaPay_Consumer_iOS25TestAddCardViewControllerC5coderACSgSo7NSCoderC_tcfcTo + 47
9 UIKitCore 0x0000000111aaae89 -[UIClassSwapper initWithCoder:] + 246
10 UIFoundation 0x000000010f47e852 UINibDecoderDecodeObjectForValue + 753
11 UIFoundation 0x000000010f47e554 -[UINibDecoder decodeObjectForKey:] + 251
12 UIKitCore 0x0000000111aaf4d1 -[UIRuntimeConnection initWithCoder:] + 178
13 UIFoundation 0x000000010f47e852 UINibDecoderDecodeObjectForValue + 753
14 UIFoundation 0x000000010f47eaf9 UINibDecoderDecodeObjectForValue + 1432
15 UIFoundation 0x000000010f47e554 -[UINibDecoder decodeObjectForKey:] + 251
16 UIKitCore 0x0000000111aacd81 -[UINib instantiateWithOwner:options:] + 1216
17 UIKitCore 0x0000000111fc5290 -[UIStoryboard instantiateViewControllerWithIdentifier:] + 181
18 DumaPay Consumer iOS 0x0000000105623ea9 $s20DumaPay_Consumer_iOS28AddCardScannerViewControllerC010goToManualfE004cardG6ResultySo0b15CardsRecognizerN0CSg_tF + 249
19 DumaPay Consumer iOS 0x0000000105623d2e $s20DumaPay_Consumer_iOS28AddCardScannerViewControllerC02oneF15ManuallyClicked6senderyyp_tF + 62
20 DumaPay Consumer iOS 0x0000000105623d8c $s20DumaPay_Consumer_iOS28AddCardScannerViewControllerC02oneF15ManuallyClicked6senderyyp_tFTo + 76
21 UIKitCore 0x0000000111e2e834 -[UIApplication sendAction:to:from:forEvent:] + 83
22 UIKitCore 0x00000001118845b5 -[UIControl sendAction:to:forEvent:] + 67
23 UIKitCore 0x00000001118848d2 -[UIControl _sendActionsForEvents:withEvent:] + 450
24 UIKitCore 0x0000000111883888 -[UIControl touchesEnded:withEvent:] + 583
25 UIKitCore 0x0000000111e6751e -[UIWindow _sendTouchesForEvent:] + 2547
26 UIKitCore 0x0000000111e68c02 -[UIWindow sendEvent:] + 4079
27 UIKitCore 0x0000000111e47346 -[UIApplication sendEvent:] + 356
28 UIKitCore 0x0000000111f178c3 __dispatchPreprocessedEventFromEventQueue + 3232
29 UIKitCore 0x0000000111f1a1e9 __handleEventQueueInternal + 5911
30 CoreFoundation 0x0000000108c07c11 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
31 CoreFoundation 0x0000000108c07493 __CFRunLoopDoSources0 + 243
32 CoreFoundation 0x0000000108c01b4f __CFRunLoopRun + 1231
33 CoreFoundation 0x0000000108c01332 CFRunLoopRunSpecific + 626
34 GraphicsServices 0x000000010f1222fe GSEventRunModal + 65
35 UIKitCore 0x0000000111e2d1d2 UIApplicationMain + 140
36 DumaPay Consumer iOS 0x0000000105609bdb main + 75
37 libdyld.dylib 0x000000010a883861 start + 1
38 ??? 0x0000000000000001 0x0 + 1
)
Información de la plataforma
Hola @SteynMarnus ,
¡Buena atrapada! Muchas gracias por toda la información de depuración.
Intenté ejecutar nuestro Sample
con el último Xcode-beta
, y obtuve los mismos resultados que tú.
Lo echaré un vistazo y compartiré los resultados de la investigación.
Hola @SteynMarnus ,
¡Buena atrapada! Muchas gracias por toda la información de depuración.Intenté ejecutar nuestro
Sample
con el últimoXcode-beta
, y obtuve los mismos resultados que tú.
Lo echaré un vistazo y compartiré los resultados de la investigación.
¡No hay problema! Beta es un poco del 'salvaje oeste'. Gracias por investigarlo.
De acuerdo, de alguna manera lo he echado de menos.
Aquí , problema conocido no 2:
Para reducir el tamaño que ocupan los metadatos de Swift, los inicializadores de conveniencia definidos en Swift ahora solo asignan un objeto por adelantado si están llamando a un inicializador designado definido en Objective-C. En la mayoría de los casos, esto no tiene ningún efecto en su programa, pero si su inicializador de conveniencia se llama desde Objective-C, la asignación inicial de + alloc se libera sin que se llame a ningún inicializador.
Básicamente, un problema de dependencia de secuencia alloc/init
. _De nuevo…_
Bueno, mientras esto se resuelve, una solución alternativa sería reemplazar
public override convenience init() {
// Interface Builder support
self.init(primaryFormat: "")
}
con
public override init() {
// Interface Builder support
self.primaryMaskFormat = ""
self.autocomplete = true
self.autocompleteOnFocus = true
self.rightToLeft = false
self.affineFormats = []
self.affinityCalculationStrategy = .wholeString
self.customNotations = []
self.onMaskedTextChangedCallback = nil
super.init()
}
Mantengamos esto abierto hasta el lanzamiento oficial de Swift 5 .
Oh, está bien @taflanidi , MaskedTextViewDelegate.swift
en el pod en sí, ¿verdad?
@SteynMarnus lo que más te convenga. Dependiendo del tamaño de su equipo, es posible que desee introducir su propia bifurcación o simplemente reemplazar esas líneas en el módulo si trabaja por su cuenta; tu sabes mejor que yo.
No quiero poner esos cambios en la biblioteca todavía . Esta solución alternativa suena a duplicación de código, además de que sigue siendo un problema de optimización de Swift 5, así que creo que será mejor que esperemos.
UPD. Supongo que es MaskedTextFieldDelegate
que está usando, no MaskedTextViewDelegate
; sin embargo, ambos tienen el mismo problema.
Oye
Hoy se ha lanzado Xcode 10.2 y este error todavía está ahí.
@taflanidi, tu solución no ayuda.
@sashaBizquit Encontré simplemente una solución
swift
required public init?(coder aDecoder: NSCoder) {
// Interface Builder support
self.primaryMaskFormat = ""
self.autocomplete = true
self.autocompleteOnFocus = true
self.rightToLeft = false
self.affineFormats = []
self.affinityCalculationStrategy = .wholeString
self.customNotations = []
self.onMaskedTextChangedCallback = nil
super.init()
}
public override init() {
// Interface Builder support
self.primaryMaskFormat = ""
self.autocomplete = true
self.autocompleteOnFocus = true
self.rightToLeft = false
self.affineFormats = []
self.affinityCalculationStrategy = .wholeString
self.customNotations = []
self.onMaskedTextChangedCallback = nil
super.init()
}
A veces, es posible que deba limpiar la construcción después de este reemplazo
Hola @sashaBizquit , ¡oye @ Rik626!
Muchas gracias por tus informes.
El parche llegará a finales de esta semana, estad atentos.
alguna actualización sobre este tema?
¿Aún no hay actualizaciones?
De acuerdo, hubo otro error relacionado con Swift 5 que tuve que investigar adicionalmente para asegurarme de que todo funcionaba, tomó algo de tiempo.
Conoce v. 4.1.1
.
Comentario más útil
¿Aún no hay actualizaciones?