1

NSValue 不是 NSObject 吗?那我为什么要崩溃

    var coordinatesRawData = NSValue(MKCoordinate: coordinates.first!)
    if coordinatesRawData != nil {
        // Crashing here. I have a valid NSValue object
        aCoder.encodeObject(coordinatesRawData, forKey: "coordinatesRawData")
    }

错误日志

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSKeyedArchiver encodeValueOfObjCType:at:]: this archiver cannot encode structs'

但如果我这样做

    var coordinatesRawData = NSValue()
    aCoder.encodeObject(coordinatesRawData, forKey: "coordinatesRawData")

没有崩溃 - 两者都是 NSValues .. 对吗?

请注意,我所有其他 NSCoding / Decoding 工作正常。

4

1 回答 1

1

我什至没有你做到的那么远。我只在这两行上崩溃了:

let loc = CLLocationCoordinate2D(latitude: 20, longitude: 20)
let val = NSValue(MKCoordinate:loc)

这告诉我它NSValue(MKCoordinate:)坏了。这不是 Swift 的问题。使用翻译成 Objective-C 的相同代码,我得到了同样的崩溃。

于 2015-06-18T23:39:00.653 回答