小编sta*_*886的帖子

使用带有Swift 3 Date类型的NSDate类别

我有一个Obj-C类别NSDate,我正在尝试使用Swift的Date结构来使用该类别中的函数.

有没有一个干净的方法来做到这一点,而不必每次都投出或不得不创建NSDate实例Date或一些丑陋的其他黑客?

或者我不得不将我的对象定义为NSDate而不是Date?

苹果提到这里

Swift覆盖到Foundation框架提供了Date结构,它结合了NSDate类.Date值类型提供与NSDate引用类型相同的功能,并且这两者可以在与Objective-C API交互的Swift代码中互换使用.此行为类似于Swift如何将标准字符串,数字和集合类型桥接到其对应的Foundation类.

,所以我的问题是如何使用干净的最小代码访问我的NSDate类别中的额外函数Date

作为参考,我使用的是Swift 3.

objective-c nsdate objective-c-category swift swift3

11
推荐指数
1
解决办法
1839
查看次数

UIPopoverPresentationController popoverLayoutMargins似乎绝对没有效果

正如标题所示,无论我为popoverLayoutMargins提供什么价值,似乎都没有发生.

我试图显示一个锚定到UIButton的弹出菜单.一切正常,只是我想让popover扩展屏幕的宽度.

我试过玩过preferredContentSizeUIViewController.

问题是我不能让popover一直扩展到屏幕的边缘.

根据文档,我发现:

默认边缘插入是沿每条边10个点

并且以编程方式更改它不会产生任何影响.为了验证这一点,我正在使用Xcode的视图调试器.

窗口:

<UIWindow: 0x7fc96cd02c50; frame = (0 0; 375 667); gestureRecognizers = <NSArray: 0x60000025d580>; layer = <UIWindowLayer: 0x600000039140>>
Run Code Online (Sandbox Code Playgroud)

UIPopoverView

<_UIPopoverView: 0x7fc96cf227a0; frame = (10 101; 355 57); layer = <CALayer: 0x61000023f760>>
Run Code Online (Sandbox Code Playgroud)

请注意,弹出窗口的宽度恰好比窗口宽度小10 + 10个点

我正在尝试使用以下方法更改边距:

menu.popoverPresentationController?.popoverLayoutMargins = UIEdgeInsets(top: 0, left: -90, bottom: 0, right: -90)
Run Code Online (Sandbox Code Playgroud)

在尝试使用viewController之后,我尝试使用它们.那是因为UIPopoverPresentationController文档说明了这一点

在调用present(_:animated:completion :)之后配置popover表示控制器可能看似违反直觉,但UIKit在您启动演示之前不会创建演示控制器.此外,UIKit必须等到下一个更新周期才能在屏幕上显示新内容.这种延迟使您有时间为弹出框配置演示控制器.

ios swift uipopoverpresentationcontroller

7
推荐指数
0
解决办法
760
查看次数

AFHTTPSessionManager发送GET请求json格式

我正在尝试使用AFHTTPSessionManager向Web服务发送请求

这是我的问题:我想发送带有JSON格式参数的URL GET请求.像这样: http://api.mysite.com/v2/json/search parameter = {"api_key":"YOUR_API_ KEY","查询":{"perpage":50}}

我已经将AFHTTPSessionManager子类化了.这是我的代码的样子:

    + (MyAPIClient *)sharedClient {
        static MyAPIClient *_sharedClient = nil;
        static dispatch_once_t oncePredicate;
        dispatch_once(&oncePredicate, ^{
            _sharedClient = [[self alloc] initWithBaseURL:[NSURL URLWithString:kBaseURLString]];
        });
        return _sharedClient;
    }
Run Code Online (Sandbox Code Playgroud)

和初始化者:

- (instancetype)initWithBaseURL:(NSURL *)url {

    self = [super initWithBaseURL:url];
    if (!self) {
        return nil;
    }

    self.responseSerializer = [AFJSONResponseSerializer serializer];
    self.requestSerializer = [AFJSONRequestSerializer serializer];
    return self;
}
Run Code Online (Sandbox Code Playgroud)

所以这就是我做的方式:

- (void)sendMyQueryWithSuccess:
       (void(^)(NSURLSessionDataTask *task, id responseObject))success
        andFailure:(void(^)(NSURLSessionDataTask *task, NSError *error))failure{


        NSDictionary *params = @{@"api_key" : kAPIKey,
                                @"query": @{@"perpage": …
Run Code Online (Sandbox Code Playgroud)

json get ios ios7 afnetworking-2

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