NSCoder
/NSKeyedArchiver
ve NSKeyedUnarchiver
ile seri hale getirilmiş ve seri hale getirilmiş bir sınıfa sahibim. Seri hale getirme formatımdaki (basit bir arşiv değil, arşiv içeren) çeşitli hataların ele alındığını kontrol etmek için tasarlanmış birim testlerim var. Ancak, Swift 2/iOS 9'a yükselttiğimden beri, testler bazı alışılmadık davranışlar sergiliyor. Önceden, geçersiz arşivlerin sınanması geçersiz bir arşivin serileştirilmesi olarak başarısız oldu, bir Objective-C istisnası, docs durumu gibi, programı Swift'in yakalayamadığı için çöktü. Bu iyi, geleceği bir noktada test etmeyi planladım.NSKeyedUnarchiver unarchiveObjectWithData dönen
Şimdi, sınama geçer. Rastgele veya deterministik çöplerimi beslediğimde, bunun yerine bir istisna yerine dan nil
alırım. Bu yöntem için dokümanlar kontrol ettim ve listelenen bir davranış değişikliği yok.
Açıkçası, bu değişikliğin nasıl ve niçin gerçekleştiğine dair herhangi bir yer olmadığı için bu davranış değişikliğinin son derece şüpheli olduğunu görüyorum. Daha önce başarısız olan birim testlerim şimdi neden belli bir sebep olmadan geçiyor.
Bu yeni beklenen davranış (nil
döndürüyor) nedir? Değilse, geçersiz bir arşiv için nil
yerine gerçek beklenen davranışı nasıl elde edebilirim (Obj-C istisnası)?
Bunun için teşekkürler. Sanırım NSKeyedArchiver'ı yapılandıracağım ve şu anda bu ObjC istisnasını elle halledeceğim, böylece bu tuhaf belgelenmemiş yarı uygulamalı adımda değilim. – Puppy