相关疑难解决方法(0)

无法使用Swift中的NSCoder解码Int

我正在使用Xcode8 Beta和Swift 3.0.我试图在NSObject上编码一个简单的对象,但我无法解码Int或NSInteger类型.(编码过程没问题)

在此输入图像描述

代码

class Model : NSObject, NSCoding {
    var seq: NSNumber?
    var seq2: Int? // problem with seq2, NSInteger is not ok, either
    var id: String?
    var value: String?

    override init() {
        super.init()
    }

    required init?(coder aDecoder: NSCoder){
        self.seq = aDecoder.decodeObject(forKey: "seq") as? NSNumber
        self.seq2 = aDecoder.decodeInteger(forKey: "seq2")
        self.id = aDecoder.decodeObject(forKey: "id") as? String
        self.value = aDecoder.decodeObject(forKey: "value") as? String
    }

    func encode(with aCoder: NSCoder){
        aCoder.encode(seq, forKey: "seq")
        aCoder.encode(seq2, forKey: "seq2")
        aCoder.encode(id, forKey: "id")
        aCoder.encode(value, forKey: "value")
    } …
Run Code Online (Sandbox Code Playgroud)

xcode objective-c swift

10
推荐指数
1
解决办法
5112
查看次数

NSBder在decodeBool forKey上崩溃(Xcode 8,Swift 3)

我有这个简单的课程

import UIKit

class SimpleModel: NSObject, NSCoding {

    var name : String!
    var done : Bool!

    init(name:String) {
        self.name = name
        self.done = false
    }

    internal required init?(coder aDecoder: NSCoder) {
        self.name = aDecoder.decodeObject(forKey: "name") as! String
        self.done = aDecoder.decodeBool(forKey: "done") // BUG HERE
    }

    func encode(with encoder: NSCoder) {
        encoder.encode(self.name, forKey: "name")
        encoder.encode(self.done, forKey: "done")
    }
}
Run Code Online (Sandbox Code Playgroud)

保存代码:

let data = NSKeyedArchiver.archivedData(withRootObject: storageArray)
UserDefaults.standard.set(data, forKey: "storage")
UserDefaults.standard.synchronize()
Run Code Online (Sandbox Code Playgroud)

读取代码:

if let data = UserDefaults.standard.data(forKey: "storage") {
    storageArray = NSKeyedUnarchiver.unarchiveObject(with: data) …
Run Code Online (Sandbox Code Playgroud)

xcode boolean nskeyedarchiver nskeyedunarchiver

5
推荐指数
3
解决办法
3639
查看次数