小编Jas*_*ues的帖子

@IntegrationTest vs @WebIntegrationTest注释

在Spring(Boot)中,@IntegrationTest和之间有什么区别@WebIntegrationTest

根据文档,两个注释都提供了一个在通常端口上监听的满载应用服务器.

spring spring-test spring-boot

5
推荐指数
1
解决办法
2133
查看次数

使用特定类型覆盖UIViewController.view

让我们考虑具有高度自定义或复杂视图的应用程序.

我们将有一种特定类型的视图控制器发送方法到特定类型的UIView,其中UIView本身由许多其他视图组成.

该视图应具有丰富的特定于域的界面,允许控制器在其与类似的丰富模型之间进行操作.

所以我们覆盖控制器的view属性,如下所示:

@interface PlaybackViewController : UIViewController<StageLayoutDelegate, ControlPanelDelegate>
{
    NSMutableArray* _sections;
    LightingMode _lightingMode;
}

@property (nonatomic, strong) PlaybackView* view; // <------ Specific type of view

#pragma mark - injected
@property (nonatomic, strong) id<OscClient> oscClient;
@property (nonatomic, strong) AbstractStageLayoutView* stageLayoutView;

@end
Run Code Online (Sandbox Code Playgroud)

Ovverriding对于定义另一个访问器是有意义的,我只需将消息发送到特定类型的UIView而无需强制转换.

问题:唯一的问题是它会导致编译器警告:

属性类型'PlaybackView*'与从'UIViewController'继承的类型'UIView*'不兼容

..我喜欢构建没有任何警告的代码.这样,有效的警告不会被埋没在其他警告之中.

题:

  • 有没有办法压制这个特别的警告?
  • 当大多数现代OO语言很乐意允许覆盖子类中的属性或方法以便它返回超类中声明的类型的更具体的子类时,为什么这是默认设置的一部分?

cocoa-touch objective-c ios

4
推荐指数
1
解决办法
1916
查看次数

如何使用setValue创建与另一个匹配的CATransform3D:forKey:

我试图创建一个CATransform3D,但是错了.以下代码使用键值执行想要的操作:

[_transitionLayer setValue:[NSNumber numberWithFloat:metrics.translationPointsX] 
    forKeyPath:@"sublayerTransform.translation.x"];
[_transitionLayer setValue:[NSNumber numberWithFloat:metrics.radians] 
    forKeyPath:@"sublayerTransform.rotation.y"];
[_transitionLayer setValue:[NSNumber numberWithFloat:metrics.translationPointsZ] 
    forKeyPath:@"sublayerTransform.translation.z"];
Run Code Online (Sandbox Code Playgroud)

对

以下是我尝试将其设置为CATransform3D的方式:

subLayerTransform.m34 = -0.000555;
CATransform3D subLayerTransform = CATransform3DMakeTranslation(0, 0, 0);
subLayerTransform = 
    CATransform3DTranslate(subLayerTransform, metrics.translationPointsX, 0, 0);
subLayerTransform = 
    CATransform3DRotate(subLayerTransform, metrics.radians, 0, 1, 0);
subLayerTransform = 
    CATransform3DTranslate(subLayerTransform, 0, 0, metrics.translationPointsZ);
Run Code Online (Sandbox Code Playgroud)

错误

如何使用键路径创建匹配变换?

core-animation objective-c catransform3d ios

4
推荐指数
1
解决办法
2399
查看次数

假设格里高利历,为什么将86,400(一天)的时间间隔添加到一个永不答案的日期?

我创建了一种方法来计算一周的第一天和最后一天,方法是将一天的时间间隔(86,400)添加到日期,再乘以所需的天数.

一位同事评论说" 增加86,400的倍数绝不是答案 ".为什么会这样?

这是我创建的类别方法,我该如何改进?

- (NSDate*)firstDayOfWeek
{
    return [self dateWithDaysAddedGivenDayOfWeek:@{
        @1 : @-6,
        @2 : @0,
        @3 : @-1,
        @4 : @-2,
        @5 : @-3,
        @6 : @-4,
        @7 : @-5
    }];
}

- (NSDate*)lastDayOfWeek
{
    return [self dateWithDaysAddedGivenDayOfWeek:@{
        @1 : @0,
        @2 : @6,
        @3 : @5,
        @4 : @4,
        @5 : @3,
        @6 : @2,
        @7 : @1
    }];
}

- (NSDate*)dateWithDaysAddedGivenDayOfWeek:(NSDictionary*)daysToAddGivenDay
{
    NSDateComponents* components = [[NSCalendar currentCalendar]
        components:NSYearCalendarUnit | NSMonthCalendarUnit | NSWeekCalendarUnit | NSWeekdayCalendarUnit fromDate:self];

    NSInteger …
Run Code Online (Sandbox Code Playgroud)

cocoa objective-c

4
推荐指数
1
解决办法
392
查看次数

台风:如何获得符合生产协议的实例,以及另一个用于测试的实例?

我在Typhoon中定义了一个ApplicationAssembly.

所以我想要做的是:"这个类X需要注入符合Foo协议的东西.这是一个RealFoo,这是一个TestFoo.当我在现实生活中运行X时,我希望它能得到它一个RealFoo,但是当我运行我的集成测试时,我希望它能获得一个TestFoo".

我怎样才能做到这一点?

objective-c typhoon

4
推荐指数
1
解决办法
907
查看次数

Realm.io:坚持一个枚举

鉴于以下内容:

typedef NS_OPTIONS(NSUInteger, AssetClass)
{
    AssetClassFixed = 1,
    AssetClassPortable = 2
};
Run Code Online (Sandbox Code Playgroud)

如何定义一个将使用枚举类型的属性保持自身的实体?

@interface MyEntity : RLMObject

@property AssetClass assetClass;

@end
Run Code Online (Sandbox Code Playgroud)

objective-c realm ios

4
推荐指数
1
解决办法
889
查看次数

具有未知数量参数的resolveInstanceMethod

语境:

我有一个依赖注入容器 - www.typhoonframework.org

它允许使用接口定义组件以在运行时解析它们 - 使用resolveInstanceMethod和implementntationWithBlock将请求拖拽到DI容器.

用户一直在要求在运行时提供一些参数.例如:

[assembly dangerousEnemyWithWeapon:id<BigGun>]
Run Code Online (Sandbox Code Playgroud)

..敌人是由DI容器中的合作类组装而成,但枪是在运行时提供的...

问题:

是否可以使用resolveInstanceMethod来定义预先知道参数数量的实现?

我想打包这些论点,并将它们转发给另一个响应者.

参数可以按顺序打包或添加到字典中,匹配的选择器部分作为键.

objective-c objective-c-runtime

3
推荐指数
1
解决办法
816
查看次数

使用捆绑资源进行测试的最简单方法

它便于使用捆绑资源进行测试,例如为测试提供预期的结果.

对于旧的逻辑样式测试,我会使用主要包,但是对于应用程序样式测试,主包是应用程序本身.我不想把测试资源放在主包中.

例如,如果测试资源仅属于测试目标,则以下代码不起作用:

//Load a resource from the main bundle
NSString* xml = [[TyphoonBundleResource withName:@"signUpResponse.xml"] asString];
Run Code Online (Sandbox Code Playgroud)

...是否有一个特定的测试包?我怎样才能掌握这个?

objective-c ios xctest

3
推荐指数
1
解决办法
1565
查看次数

可以将Swift协议定义为动态吗?

我已将我的大部分应用程序转换为Swift.剩下的是一些Objective-C协议,以及一些应该使用Swift习语代替Objective-C风格的代码.

我已经使用Typhoon组装了我的应用程序.现在将其中一个协议转换为Swift之后,我注意到初始化器不再是动态的(DI库需要).所以我尝试将其标记为动态,但出现以下错误:

协议不能是动态的

它抱怨第三个参数(我的Swift协议)永远不能作为Objective-C的一部分参与.这似乎是Swift/ObjC互操作性的普遍限制.是唯一的解决方案来定义ObjC中的协议并让Swift类实现它吗?

以下解决方案不起作用:

public protocol WeatherReportDao : NSObjectProtocol { //Extend NSObjectProtocol 
}
Run Code Online (Sandbox Code Playgroud)

objective-c typhoon swift

3
推荐指数
1
解决办法
604
查看次数

Kotlin + Spring Boot请求编组

鉴于以下有效负载:

data public class CandidateDetailDTO(val id: String,
                                     val stageName: String,
                                     val artists: Iterable<ArtistDTO>,
                                     val instruments: Iterable<InstrumentDTO>,
                                     val genres: Iterable<GenreDTO>,
                                     val discoverable: Boolean,
                                     val gender: Gender,
                                     val involvement: Involvement,
                                     val biography: String,
                                     var photoURLs: List<URL>,
                                     var birthday: Date? = null,
                                     var customGenre: String? = null)
Run Code Online (Sandbox Code Playgroud)

..如图所示,某些字段允许为空,其他字段不允许.

使用Spring Boot调用请求时,如果缺少预期字段,则返回400 - Bad Request.这是不太令人期待的,我期望相关的控制器建议适用:

@ControllerAdvice
public class SomeExceptionHandler : ResponseEntityExceptionHandler()
{
    @ExceptionHandler(Throwable::class)
    @ResponseBody
    public fun onException(ex: Throwable): ResponseEntity<ErrorResponse>
    {
        val responseCode = ex.responseCode()
        val errorResponse = ErrorResponse(response = ResponseHeader(responseCode, ex.message))
        return ResponseEntity(errorResponse, responseCode.httpStatus());
    } …
Run Code Online (Sandbox Code Playgroud)

java spring jackson kotlin spring-boot

3
推荐指数
1
解决办法
4302
查看次数