小编owe*_*nfi的帖子

如何使用XCTAssertThrowsSpecific

我正在使用XCTest编写Cocoa单元测试,并且最近第一次使用了XCTAssertThrows.这很酷,但我想用XCTAssertThrowsSpecific让它变得更好,并且需要一定的异常.

这是一个示例测试:

-(void)testShortPassword {
    XCTAssertThrows([user storePassword:@"abc"],@"Expect exception for short pw");
}
Run Code Online (Sandbox Code Playgroud)

在我的用户类中,我有以下代码:

-(void)storePassword:(NSString*)password {

    NSCAssert(password.length > 6, @"Password must be longer than 6 characters");

    // go on to store the password on the keychain
}
Run Code Online (Sandbox Code Playgroud)

请记住,Cocoa通常不会使用异常(因此最好返回错误,并在前面的示例中显示UI等).如何以可被捕获的方式抛出异常XCTAssertThrowsSpecific?我如何指定XCTAssertThrowsSpecific(expression, specificException, format...)

unit-testing objective-c nsexception ios xctest

23
推荐指数
1
解决办法
8751
查看次数

当与iexact一起使用时,Django get_or_create无法设置字段

我想使用name__iexactget_or_create来避免在可能的情况下在用户输入的字段上重复.

我的Provider模型有一个名称字段,我在get_or_create中使用它.

查找工作正常,但在第一次创建实例时,如下面的p1/Timber示例(名称

失败:

>>> p1, c1 = Provider.objects.get_or_create(name__iexact="Timber")
>>> p1, c1
(<Provider: >, True)
>>> p1.name
u''
Run Code Online (Sandbox Code Playgroud)

按预期工作:

>>> p2, c2 = Provider.objects.get_or_create(name="Cedar")
>>> p2.name, c2
('Cedar', True)
>>> p3, c3 = Provider.objects.get_or_create(name__iexact="Cedar")
>>> p3, c3
(<Provider: Cedar>, False)
>>> Provider.objects.get_or_create(name__iexact="cedar")
(<Provider: Cedar>, False)
Run Code Online (Sandbox Code Playgroud)

__iexact用的创建部分不兼容get_or_create,这是预期的行为(为什么),或者我已经运行到一个Django的bug?

python django postgresql django-models

21
推荐指数
2
解决办法
3426
查看次数

在iPhone 6模拟器中启用单手模式?

iPhone 6 Plus具有"单手模式",Apple称其iPhone设计页面上的"保持一切可触及" .

通过双击(但不按下)主页按钮启用该模式.启用后,屏幕会缩小到正常高度的一半左右.

有没有办法在模拟器中启用此模式来测试它的外观和过渡?

我正在运行Xcode 6 GM并且无法发现任何东西.最坏的情况是,有人可以在设备上发布确切的尺寸,以便可以通过可调整大小的iPhone模拟器进行模拟吗?


更新:根据John Gruber的评论,该功能可在iPhone 6 Plus 6上使用,并不是一个"模式",而是一个瞬间的快捷方式.也许因为它只持续一次,所以进行大量测试并不重要.他分享了截图,显示了相应的尺寸差异:

iPhone 6和6 Plus之间的可达性比较

iphone xcode ios ios-simulator

9
推荐指数
1
解决办法
2109
查看次数

在用户注销时使iOS设备推送令牌无效

当我们退出应用程序时,如何可靠地使设备的推送令牌无效(从我的服务器上删除用户配置文件)给我的服务用户?

我在我的用户配置文件中保留一个包含apns令牌的字符串数组,每当用户在给定设备上启用推送通知时添加一个.

后来我意识到推送令牌对于设备是唯一的,但显然对我的内部用户帐户一无所知,因此如果一个用户注销而另一个用户登录(同一设备),则每个用户都拥有相同的令牌.然后,设备的当前用户获得针对其中任何一个的推送通知.

基本的解决方案是在注销时从用户配置文件中删除设备的令牌,但我想出了一堆陷阱,因为我认为通过:

  1. 注销不应该要求网络访问 - 我可以尝试通知我的服务器,但是即使用户没有网络访问权限,也需要注销才能异步成功(?)
  2. 实际的设备令牌可能是未知的 - 如果用户暂时关闭了推送权限,则不会给出当前令牌.并且存储设备< - >密钥信息最多似乎很脆弱,因为每个安装时都会更改identifierForVendor并且不推荐使用UDID方法.
  3. 服务器端是否正常(在向帐户添加令牌时,确保没有为任何其他帐户设置相同的令牌) - 这取决于登录的第二个用户,这是无法保证的.

我是否缺少更多边缘案例,我可以使用哪些策略来解决它们?

rest push-notification apple-push-notifications ios

8
推荐指数
1
解决办法
2823
查看次数

如何将git repo的子目录部署到弹性beanstalk

我对弹性豆茎很新.对我而言,部署时需要提交git并不是很明显,但现在我在文档中发现它git archive在幕后使用来制作一个部署的zip.

如何仅部署大型项目的子目录; 没有上传回购的全部内容?

说我有一个像这样的结构:

git-repo/
    mobile/
        ios/...
        android/...
    assets/...
    django-app/
        .ebextensions
        manage.py
        site/...
        ...
Run Code Online (Sandbox Code Playgroud)

我想在django-app上下部署.

理想情况下,我会避免使用子树,并避免使用其他脚本(但如果eb deploy有一种方法可以自动化脚本,那么脚本就可以了).

git django amazon-elastic-beanstalk

6
推荐指数
1
解决办法
549
查看次数

停止UISearchDisplayController显示空单元格

我在一个相当标准的tableview上实现了一个UISearchDisplayController(表+搜索的数据源相同).我遇到的问题是当结果没有填满屏幕时,实际结果下面有"伪"行.

我能够设置背景颜色,但无法找到抑制这些行/分隔符的好方法.它们似乎与我的numberOfRowsInSection:委托响应分离.

如果我设置searchResultsTableView.separatorColor(绿色),它只会更改实际结果行.

我能够将separatorStyle更改为UITableViewCellSeparatorNone,但后来我必须在实际结果上手动重新创建分隔符,并且有边缘情况(如选择颜色覆盖我的视图).

是否有一种干净的方法来隐藏附加截图中指出的行?

在此输入图像描述

uitableview uisearchdisplaycontroller ios

0
推荐指数
1
解决办法
836
查看次数