小编And*_*yan的帖子

iOS-解锁后第一个网络请求失败

我有一个iOS应用,可从中的服务器提取用户数据applicationDidBecomeActive

如果用户按下主页按钮,然后通过应用程序图标或多任务屏幕返回到应用程序,则该功能可以正常工作。

如果用户在此期间锁定设备(无论是在仍在应用程序中还是在按下主屏幕,然后锁定),则网络请求将失败。我正在使用Alamofire。响应对象为nil,且result.data为空。服务器上也没有记录任何请求。故障立即发生。

iphone ios swift alamofire

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

如何将门卫访问令牌作为json返回

我正在尝试为iOS应用程序创建一个登录系统,其中导轨后端由设备和门卫提供支持.

我想限制网络请求的数量,因此不希望必须从凭证中获取令牌,然后将用户详细信息作为单独的请求获取.

这是我目前的尝试:

token = Doorkeeper::AccessToken.create!(application_id: @application_id,
    resource_owner_id: current_user.id, :expires_in => 168.hours)
puts token.token
render :json => {:user => current_user, :token => token.as_json(:include=> token)}, 
    status: :ok, location: :users
Run Code Online (Sandbox Code Playgroud)

然而,返回的是:

{"user":{"id":2,"email":"user3@test.com","created_at":"2014-06-12T17:25:12.000Z",
"updated_at":"2014-06-13T12:20:18.536Z",
"firstName":"user","lastName":"test","subscription":null},
"token":{"resource_owner_id":2,"scopes":[],"expires_in_seconds":604800,
"application":{"uid":"[Filtered]"}}}
Run Code Online (Sandbox Code Playgroud)

因此,实际的access_token键不会被传回以允许我进行将来的调用.我可以看到令牌本身没有返回DoorKeeper::AccessToken.as_json,但token.as_json(:include=> token)仍然没有返回它.

有谁知道如何返回AccessToken,包括访问令牌本身,如json?

json ruby-on-rails devise doorkeeper

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

无法在XCTestCase对象(或引用它的任何对象)中访问AppDelegate

我正在尝试在我的swift iOS应用程序上开始单元测试,但已经进入了一个完整的路障.我似乎无法访问任何使用我的appDelegate的东西.

我的appDelegate有一个UserController对象,用于存储和管理登录用户以及它的各种数据.为了简化调用,userController我创建了一个自定义子类,NSObject其中所有的模型类都是子类.它有它

let userController : UserController = (UIApplication.sharedApplication().delegate as! AppDelegate).userController
Run Code Online (Sandbox Code Playgroud)

每当我尝试测试其中一个子类模型时,此行会导致SIGABRT异常.

无法将"MyProject.AppDelegate"类型的值转换为"MyProjectionTests.AppDelegate".

我试过从测试目标中删除AppDelegate,但这给了我AppDelegate是未定义的.我已经尝试添加import MyProject到测试文件的顶部,但这也不起作用.

我见过另外两个解决方案:

  • 使应用程序委托函数私有 - 我真的厌恶做这样的事情.如果我必须专门为测试更改我的代码,测试的重点是什么.

  • 实现一个测试应用程序委托并使用它 - 如果我没有在项目中测试什么,再次讨论测试的重点.

有没有人有办法解决吗.在RSpec与轨道之间的协调之后,Swift中的单元测试证明是一件令人头疼的问题

xcode ios xctest swift

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

XCTest并使用模拟对象作为通知接收器

在XCTest with swift中,您可以在需要它的测试函数中定义模拟对象.就像这样

func testFunction(){
    class mockClass: AnyObject{
        func aFunction(){
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用这些模拟对象来测试另一个函数在给定某个条件的情况下发出正确的通知(在我的情况下,成功通知是用对象的204状态代码广播的.

我遇到的问题是我得到一个"无法识别的选择器"运行时错误,即使该deletedSuccess()函数显然存在/

下面是一些代码转储

func testDelete(){
    let expectation = expectationWithDescription("Post was deleted")

    class MockReciever : AnyObject {
        func deleteSuccess(){
            println("delete successfull")
            expectation.fulfill()
        }
    }

    let mockReciever = MockReciever()
    NSNotificationCenter.defaultCenter().addObserver(mockReciever, selector: "deleteSuccess", name: PostDeletedNotification, object: post)
    let response = NSHTTPURLResponse(URL: NSURL(), statusCode: 204, HTTPVersion: nil, headerFields: nil)
    let request = NSURLRequest()
    post.deleteCompletion(request, response: response, data: nil, error: nil)

    waitForExpectationsWithTimeout(30, handler: { (error) -> Void in
        if error …
Run Code Online (Sandbox Code Playgroud)

unit-testing ios xctest xctestexpectation

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