Ios 使用扩展和附加函数将Swift方法转换为Objective-C

Ios 使用扩展和附加函数将Swift方法转换为Objective-C,ios,objective-c,arrays,swift,Ios,Objective C,Arrays,Swift,我有一个Swift方法,我想转换成Objective-C。该方法使用数组的extend方法,据我所知,它只是在再次调用自身时向数组添加一个对象 斯威夫特: ///the method to serialized all the objects func serializeObject(object: AnyObject,key: String?) -> Array<HTTPPair> { var collect = Array<HTTPPair&g

我有一个Swift方法,我想转换成Objective-C。该方法使用数组的extend方法,据我所知,它只是在再次调用自身时向数组添加一个对象

斯威夫特:

///the method to serialized all the objects
    func serializeObject(object: AnyObject,key: String?) -> Array<HTTPPair> {
        var collect = Array<HTTPPair>()
        if let array = object as? Array<AnyObject> {
            for nestedValue : AnyObject in array {
                collect.extend(self.serializeObject(nestedValue,key: "\(key!)[]"))
            }
        } else if let dict = object as? Dictionary<String,AnyObject> {
            for (nestedKey, nestedObject: AnyObject) in dict {
                var newKey = key != nil ? "\(key!)[\(nestedKey)]" : nestedKey
                collect.extend(self.serializeObject(nestedObject,key: newKey))
            }
        } else {
            collect.append(HTTPPair(value: object, key: key))
        }
        return collect
    }
目标是为字典中的每个键/值对获取WEEHTTPPair对象的NSArray,但我在Objective-C代码中失去了extend和append to apply的含义。对我来说,看起来两者都在将对象添加到数组中,而数组无论如何都是新创建的,但到目前为止,我所缺乏的知识更多

[编辑]

相应地使用了该方法

斯威夫特

///convert the parameter dict to its HTTP string representation
    func stringFromParameters(parameters: Dictionary<String,AnyObject>) -> String {
        return join("&", map(serializeObject(parameters, key: nil), {(pair) in
            return pair.stringValue()
            }))
    }
执行此操作时:

[collect addObject:[self serializeObject:nestedObject key:newKey]];
您正在将
NSArray
添加到
collect
对象中。相反,您希望将响应中包含的对象添加到
collect

[collect addObjectsFromArray:[self serializeObject:nestedObject key:newKey]];

对我来说,这看起来很直截了当。你认为遗漏了什么?我编辑了这个问题,提供了更多关于这个问题的信息。我在等一个NSArray的WEEHTTPPair,而我却得到了一个包含NSArray的NSArray?!仍在尝试调试原因。是的,这是缺少的部分,extend是addObjectsFromArray选择器,我无法找到它。谢谢
[collect addObject:[self serializeObject:nestedObject key:newKey]];
[collect addObjectsFromArray:[self serializeObject:nestedObject key:newKey]];