gpt4 book ai didi

ios - 在 Swift 中使用闭包作为唯一参数初始化对象

转载 作者:行者123 更新时间:2023-11-30 14:10:29 25 4
gpt4 key购买 nike

我有一个从我的 Obj-C pod 之一自动生成的 swift 类,如下所示:

typealias BlockDomainMapperMappingBlock = (AnyObject!) -> AnyObject!

class BlockDomainMapper : DomainMapper {

var mappingBlock: BlockDomainMapperMappingBlock! { get }

/*not inherited*/ init!(block: BlockDomainMapperMappingBlock!)
}

当尝试像这样初始化对象时:

let domainMapper = BlockDomainMapper { (objectToMap : AnyObject!) -> AnyObject! in
return LoginCredentials(token: objectToMap)
}

我收到以下错误:

Cannot find an initializer for type 'BlockDomainMapper' that accepts an argument list of type '((AnyObject!) -> AnyObject!)'

这让我感到困惑,因为我使用 X-Code 中的自动完成功能来生成大部分代码(除了:(objectToMap : AnyObject!),它以 AnyObject! 占位符开始。)

编辑:这是生成 swift 类的 Objective-C 代码:

typedef id (^BlockDomainMapperMappingBlock)(id dataToMap);

@interface BlockDomainMapper : GLTDomainMapper

@property (nonatomic, readonly, copy) BlockDomainMapperMappingBlock mappingBlock;

+ (BlockDomainMapper *)mapperWithBlock:(BlockDomainMapperMappingBlock)block;

@end

编辑2:哇!再次查看 Obj-c 代码后,我认为它要么搞砸了 mapperWithBlock 转换,要么我使用了错误的语法来调用此类类方法。

最佳答案

尝试:

让domainMapper = BlockDomainMapper() { (objectToMap : AnyObject!)

(即在 BlockDomainManager() 之后包含 ())

关于ios - 在 Swift 中使用闭包作为唯一参数初始化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31830481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com