Ios 使用扩展和附加函数将Swift方法转换为Objective-C
我有一个Swift方法,我想转换成Objective-C。该方法使用数组的extend方法,据我所知,它只是在再次调用自身时向数组添加一个对象 斯威夫特: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
///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]];