- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有 2 个自定义数据结构的应用程序,其中一个名为 PaxData,另一个名为 ManifestData,基本上 ManifestData 包含 PaxData 数组。
现在一切正常,然后我实现了 NSCoding,以实现永久存储。我将其添加到我的 PaxData 和 ManifestData 文件中。然后我用iPhone 4S在模拟器上尝试了一下,效果很好。然后尝试使用 iPad Air...这里崩溃了:
aCoder.encodeObject(manifestPax, forKey: PropertyKey.manifestPaxKey)
我的错误:线程 1:EXC_BAD_ACCESS(code=EXC_I386_GPFLT)
现在我的manifestPax是= [PaxData]
崩溃后,我开始挖掘,试图找到解决方案,我最终发现我的应用程序总是在 64 位设备上崩溃,每次我在非 64 位(4s-5-iPad 2)上运行它时)它有效!
所以现在,我没有主意了......任何帮助将不胜感激
这是我的 ManifestData.swift 文件的更多内容:
init?(date: NSDate, pilotName: String, acReg: String, manifestPax: [PaxData]) {
self.date = date
self.pilotName = pilotName
self.acReg = acReg
self.manifestPax = manifestPax
super.init()
if pilotName.isEmpty || acReg.isEmpty || manifestPax.isEmpty {
return nil
}
}
// MARK : NSCoding
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(date, forKey: PropertyKey.dateKey)
aCoder.encodeObject(pilotName, forKey: PropertyKey.pilotNameKey)
aCoder.encodeObject(acReg, forKey: PropertyKey.acRegKey)
aCoder.encodeObject(manifestPax, forKey: PropertyKey.manifestPaxKey)
}
required convenience init?(coder aDecoder: NSCoder) {
let date = aDecoder.decodeObjectForKey(PropertyKey.dateKey) as! NSDate
let pilotName = aDecoder.decodeObjectForKey(PropertyKey.pilotNameKey) as! String
let acReg = aDecoder.decodeObjectForKey(PropertyKey.acRegKey) as! String
let manifestPax = aDecoder.decodeObjectForKey(PropertyKey.manifestPaxKey) as! [PaxData]
self.init(date: date, pilotName: pilotName, acReg: acReg, manifestPax: manifestPax)
}
编辑:这是 PaxData.swift:
init?(paxName: String, paxWeight: String, paxEmergencyName: String, paxEmergencyPhone: String, paxDestinationComments: String) {
self.paxName = paxName
self.paxWeight = paxWeight
self.paxEmergencyName = paxEmergencyName
self.paxEmergencyPhone = paxEmergencyPhone
self.paxDestinationComments = paxDestinationComments
super.init()
if paxName.isEmpty || paxWeight.isEmpty || paxEmergencyName.isEmpty || paxEmergencyPhone.isEmpty || paxDestinationComments.isEmpty {
return nil
}
}
// MARK : NSCoding
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(paxName, forKey: PropertyKey.paxNameKey)
aCoder.encodeObject(paxWeight, forKey: PropertyKey.paxWeightKey)
aCoder.encodeObject(paxEmergencyPhone, forKey: PropertyKey.paxEmergencyPhoneKey)
aCoder.encodeObject(paxEmergencyName, forKey: PropertyKey.paxEmergencyNameKey)
aCoder.encodeObject(paxDestinationComments, forKey: PropertyKey.paxDestinationCommentKey)
}
required convenience init?(coder aDecoder: NSCoder) {
let paxName = aDecoder.decodeObjectForKey(PropertyKey.paxNameKey) as! String
let paxWeight = aDecoder.decodeObjectForKey(PropertyKey.paxWeightKey) as! String
let paxEmergencyName = aDecoder.decodeObjectForKey(PropertyKey.paxEmergencyNameKey) as! String
let paxEmergencyPhone = aDecoder.decodeObjectForKey(PropertyKey.paxEmergencyPhoneKey) as! String
let paxDestinationComments = aDecoder.decodeObjectForKey(PropertyKey.paxDestinationCommentKey) as! String
self.init(paxName: paxName, paxWeight: paxWeight, paxEmergencyName: paxEmergencyName, paxEmergencyPhone: paxEmergencyPhone, paxDestinationComments: paxDestinationComments)
}
最佳答案
所以我找到了一种方法来修复它,进行了测试,并且它有效,这实际上是非常愚蠢的。我进入“build设置”,将arm64条目全部删除,在模拟器上运行该应用程序,停止它,然后在支持的架构列表中重新添加arm64。
现在可以了!
关于ios - 仅在 64 位设备上进行编码时 NSCoding 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36096866/
假设我有这个 Swift 类: class Foo: NSObject, NSCoding { var stringMember: String var intMember: Int
我需要对包含多个自定义 NSObject 实例的数组进行编码类(class)。但是,这样做时,它会返回带有消息的崩溃: -[Person encodeWithCoder:]: unrecognized
import Foundation class C: NSObject, NSCoding { var n: String = "" override init() {
我正在尝试将 NSCoding 协议(protocol)添加到我的自定义类中: class Convo: NSObject, NSCoding { var name: String v
我有一个 costum 对象,它引用了另一个自定义对象。如何在我的 - (void)encodeWithCoder:(NSCoder *)encoder 方法中对一个自定义对象内的自定义对象进行编码?
我有 .h 和 .m 来实现 NSCoding,但是 mutableArray 对象计数总是 0 ... .h #import @interface Favorite : NSObject {
我有一个自定义对象,我想将其保存到磁盘而不是内存。自定义对象有子对象,子对象有子对象等等。这棵树相当广泛。其中一个子对象有 30 多个属性,其中 6 个是子对象本身。 如果我想使用NSCoding,是
我有两个类:Contact 和 Bill。 Contact 有一个类型为 Bill 的数组。 当我坚持使用 NSKeyedArchiver 时,我的联系人保持得很好,但是,它不会保持 Bill 数组。
我有一个带有 NSString 键和 Class (objc_class) 值的 NSDictionary,我想使用 NSCoding 存档这个字典 协议(protocol)。 我如何存档“类”对象?
当使用 NSCoding 或 NSKeyedArchiver 建立父子关系时;我无法在子项中设置对父项的引用,因为它最终会在 Swift Playground 上崩溃。 我想在我的 Child 类中引
我一辈子都弄不明白为什么我会收到此类不符合 NSCoding 协议(protocol)的错误。也许另一双眼睛会有所帮助。我试图添加注释以明确每个函数在做什么。 import Foundation im
我使我的以下 Person 类符合 NSCoding 协议(protocol)。 class Person: NSObject, NSCoding{ var age:Int var h
我正在尝试能够序列化和解码自定义类。该类本身有一个属性,它是一个枚举数组,如下所示: (我已经阅读了如何使用原始值并将其序列化,但我还没有弄清楚如何使用这样的数组来做到这一点)。 enum WeekD
我有一个带有 String 属性和 NSImage 属性的“Thing”对象; Thing 类有 encodeWithCoder: 和 decodeWithCoder: 方法,我可以使用 NSKeye
我正在使用 NSCoding 来存档/取消存档自定义类作为数据持久化的方法。如果对象是 NSObject 的子类,它工作正常,但我也有对象是自定义对象的子类。我是否需要更改 initWithCoder
我有一系列嵌套对象需要通过 NSCoding 协议(protocol)进行处理,以便我可以将顶级对象保存到 NSUserDefaults 中。 这是对象的结构: '讲师'类 NSMutableArra
-(void)transformObjects:(NSMutableArray*)array key:(NSString*)key { NSMutableArray* archiveArray
我在 Swift 中使用 NSCoding 时遇到问题。我试图实现该协议(protocol),但每当我调用我的 save() 方法时都会发生崩溃。 Xcode 在 encodeWithCoder 中将
我正在尝试使用基本的父子对象继承系统编写一个简单的 RPG,该系统被保存并加载到游戏状态中,但是当发生加载时,父级没有数据出现,我正在努力理解为什么。 为了简单起见,我做了一个简单的父子对象继承,其中
我有一个 NSPopUpButtonCell 的自定义子类,以便我可以覆盖其 drawBezelWithFrame:inView: 方法。 目前,我必须使用 initTextCell:pullsDow
我是一名优秀的程序员,十分优秀!