Swift - 将Int64转换为AnyObject for NSMutableArray

Bog*_*nov 5 casting int64 nsmutablearray swift

嗨,我有一个NSMutableArray,我试试这个:

var ma = NSMutableArray()
let number:Int64 = 8345834344
ma.addObject(number)// Error "Type Int64 does not conform to protocol AnyObject"
Run Code Online (Sandbox Code Playgroud)

如何将Int64变量添加到NSMutableArray()?

Mun*_*ndi 10

您正在使用Foundation数组(NSMutableArray),因此您应该使用Foundation数字对象:

ma.addObject(NSNumber(longLong:number))
Run Code Online (Sandbox Code Playgroud)

您还可以使用本机swift数组:

var ma = [Int64]()
ma.append(number)
Run Code Online (Sandbox Code Playgroud)

  • 旧习难改. (2认同)

use*_*730 9

像Swift一样,这是在Swift中实现的.

所以你可以这样做(或者你想要的类型的等价物),它可以神奇地使用Int64,语言需要AnyObject:

extension Int64 : _ObjectiveCBridgeable
{
    public init(_ number: NSNumber)
    {
        self.init(number.longLongValue)
    }

    public func _bridgeToObjectiveC() -> NSNumber
    {
        return NSNumber(longLong: self)
    }

    public static func _getObjectiveCType() -> Any.Type
    {
        return NSNumber.self
    }

    public static func _isBridgedToObjectiveC() -> Bool
    {
        return true
    }

    public static func _forceBridgeFromObjectiveC(source: NSNumber, inout result: Int64?)
    {
        result = source.longLongValue
    }

    public static func _conditionallyBridgeFromObjectiveC(source: NSNumber, inout result: Int64?) -> Bool
    {
        result = source.longLongValue
        return true
    }
}
Run Code Online (Sandbox Code Playgroud)