1

我知道 injectParameterWith 需要一个 id,但我对 Objective-C 还很陌生,不确定那里的交互。这是一个展示我的案例的片段:

    return [TyphoonDefinition withClass: AWSServiceConfiguration.class
                      configuration:^(TyphoonDefinition *definition) {
                         definition.scope = TyphoonScopeSingleton;
                         [definition useInitializer:@selector(configurationWithRegion:credentialsProvider:) parameters:^(TyphoonMethod *initializer) {
                             [initializer injectParameterWith: AWSRegionUSEast1]; //compile error here
                             [initializer injectParameterWith: self.awsCredentialsProvider];
                         }];
                      }];

在这种情况下,正确的用法应该是什么?

4

1 回答 1

2

您必须使用“@”符号将您的原语装箱为 NSNumber,例如@(AWSRegionUSEast1)

所以你的定义应该是:

return [TyphoonDefinition withClass: AWSServiceConfiguration.class
    configuration:^(TyphoonDefinition *definition) 
    {
        definition.scope = TyphoonScopeSingleton;
        [definition useInitializer:@selector(configurationWithRegion:credentialsProvider:)
            parameters:^(TyphoonMethod *initializer) 
        {
            [initializer injectParameterWith: @(AWSRegionUSEast1)]; //Hooray, compiles!
            [initializer injectParameterWith: self.awsCredentialsProvider];
        }];
}];

您可以在此处的用户指南中找到有关注入配置(基元、结构 cstrings 等)的更多信息。

于 2014-10-19T22:50:01.060 回答