X
entre les crochets sur cette ligne si vous avez effectué toutes les opérations suivantes :input-mask
StackOverflow pour des problèmes similaires.J'ai remarqué qu'après avoir utilisé ViewController qui utilisait un TextField utilisant le masque de saisie, l'application plantait. C'était étrange car cette page exacte fonctionnait la veille et je n'avais apporté aucune modification à ce contrôleur de vue ou à cette interface utilisateur dans le storyboard - Le seul changement que j'avais apporté était dans mon environnement: j'avais construit l'application avec xCode 10 Beta 2 pour pouvoir exécuter/tester l'application sur mon iphone qui exécute la version bêta d'iOS 12.2 Developer bêta 2. J'ai décidé de créer un nouveau contrôleur de vue en rassemblant un par un tous les contrôles de la page actuelle et en voyant quand il pauses - il ne s'est cassé qu'au moment où j'ajoute les objets de délégué InputMask.
Avoir une page avec une configuration InputMask Textfield - créer une application pour iOS 12.2 Developer beta 2 (en utilisant xCode 10 beta 2)
Comportement attendu
Fonctions de masque de saisie
Comportement réel
L'application plante : erreur produite :
Terminating app due to uncaught exception 'NSGenericException', reason: 'This coder requires that replaced objects be returned from initWithCoder:'
C'est le cœur du problème, cependant, le reste de la pile d'appels d'erreur peut être trouvé ici :
*** 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
)
Informations sur la plate-forme
Salut @SteynMarnus ,
Belle prise! Merci beaucoup pour toutes les informations de débogage.
J'ai essayé d'exécuter notre Sample
avec le dernier Xcode-beta
, et j'ai les mêmes résultats que vous.
Je vais y jeter un coup d'œil, et je partagerai les résultats de l'enquête.
Salut @SteynMarnus ,
Belle prise! Merci beaucoup pour toutes les informations de débogage.J'ai essayé d'exécuter notre
Sample
avec le dernierXcode-beta
, et j'ai les mêmes résultats que vous.
Je vais y jeter un coup d'œil, et je partagerai les résultats de l'enquête.
Pas de problème! Beta, c'est un peu le « Far West ». Merci de vous y être penché.
D'accord, d'une manière ou d'une autre je l'ai raté.
Ici , problème connu n°2 :
Pour réduire la taille occupée par les métadonnées Swift, les initialiseurs de commodité définis dans Swift n'allouent désormais un objet à l'avance que s'ils appellent un initialiseur désigné défini dans Objective-C. Dans la plupart des cas, cela n'a aucun effet sur votre programme, mais si votre initialiseur de commodité est appelé depuis Objective-C, l'allocation initiale de +alloc est libérée sans qu'aucun initialiseur ne soit appelé.
Fondamentalement, un problème de dépendance de séquence alloc/init
. _De nouveau…_
Eh bien, pendant que cela est résolu, une solution de contournement serait de remplacer
public override convenience init() {
// Interface Builder support
self.init(primaryFormat: "")
}
avec
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()
}
Gardons cela ouvert jusqu'à la sortie officielle de Swift 5 .
Oh ok cool @taflanidi , je vais essayer - je suppose que je dois le remplacer dans le fichier MaskedTextViewDelegate.swift
dans le pod lui-même, n'est-ce pas ?
@SteynMarnus tout ce qui vous convient. Selon la taille de votre équipe, vous voudrez peut-être introduire votre propre fourche ou simplement remplacer ces lignes dans le pod lui-même si vous travaillez seul ; tu sais mieux que moi.
Je ne veux pas mettre ces changements dans la bibliothèque tout de suite . Cette solution de contournement sonne une duplication de code, et il s'agit toujours d'un problème d'optimisation Swift 5, donc je pense que nous ferions mieux de nous retenir.
UPD. Je suppose que c'est MaskedTextFieldDelegate
vous utilisez, pas MaskedTextViewDelegate
; néanmoins, les deux ont le même problème.
Hey
Aujourd'hui, Xcode 10.2 est sorti et ce bug est toujours là.
@taflandi votre solution de contournement n'aide pas.
@sashaBizquit J'ai trouvé simplement une solution de contournement
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()
}
Parfois, vous devrez peut-être nettoyer la construction après ce remplacement
Salut @sashaBizquit , salut @Rik626 !
Merci beaucoup pour vos rapports.
Le patch arrive plus tard cette semaine, restez à l'écoute.
une mise à jour sur ce problème ?
Toujours pas de mises à jour ?
D'accord, il y avait donc un autre bogue lié à Swift 5 que j'ai dû enquêter en plus afin de m'assurer que tout fonctionnait, cela a pris un certain temps.
Rencontrez v. 4.1.1
.
Commentaire le plus utile
Toujours pas de mises à jour ?