我有这个类用于根据我的后端验证用户.
class BackendService {
class func performLogin(#email: String, password: String, success:((res: NSHTTPURLResponse, json: JSON, statusCode: HTTPStatus))->(), failure: (NSError)->()) {
let loginURL = baseURL + "/login"
let parameters = ["email": email, "password": password]
Alamofire.request(.POST, loginURL, parameters: parameters).responseJSON { (req, res, json, err) in
if(err != nil) {
let response = (error: err!)
failure(response)
}
else {
if let httpStatus = HTTPStatus(rawValue: res!.statusCode) {
let response = (res: res, json: JSON(json!) , statusCode: httpStatus)
success(response)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在success(response)我得到 …
我想要做的是为我的UINavigationController添加一个自定义视图,UINavigationBar但仅限于当前可见的视图控制器.
因此,我通过获取引用来构建我想要在容器视图中添加的视图的子视图,并将此视图添加到导航栏:
let navBar = navigationController?.navigationBar as UINavigationBar!
Run Code Online (Sandbox Code Playgroud)
结果如下:

但是,当我在UINavigationController堆栈中推送另一个视图控制器时,此子视图仍然存在于UINavigationBar推送的viewControllers中:

仅在我当前视图中添加此子视图的最佳方法是什么,UINavigationBar并且还没有在连续的视图控制器上保留它?
假设我有一堂课
public class MyClass: NSObject, ABCDelegate {
func delegateMethod(a: a, b: b) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
这个委托方法由一个MyClass处理一些网络操作的单例调用.
事情是编译器抱怨Method 'delegateMethod(...)' must be declared public because it matches a requirement in public protocol 'ABCDelegate'.
我的问题是:
private func或简单的方法func最近我帮助一些朋友在他们的网站上发布了一个这样的工作邀请系统:用户创建一个帐户,我们发送一封验证邮件,当他验证电子邮件时,他获得了一个免费信用在网站上花费.除此之外,他还可以在社交网络上或通过电子邮件分享个性化链接,当人们使用此链接注册时(再次通过电子邮件验证帐户),每次邀请可获得一个积分.就像thefancy.com上的邀请系统或网上任何其他奖励驱动的邀请系统一样.
最近我们看到虚假用户帐户的提升率可能是自动化的.注册页面有一个CAPTCHA,但我们知道这可以被绕过.我们还看到用户创建一次性电子邮件地址的比率提高,以便在特定的邀请链接之后创建帐户,从而使一个合法用户认为他们使用他获得的免费信用.
我正在寻找一种自动化的方法来防止这种滥用.我目前正在研究对来自同一个IP地址的邀请/注册的速率限制,但这个系统本身就有自己的缺陷.
还有其他生产测试的想法?
谢谢
编辑: 我还建议通过短信进行2个因子注册,但由于预算不足而被拒绝.
您好,我正在尝试模拟我用来测试各种视图控制器实际上正确调用它的方法的单例之一。
我已经声明了单身人士
public class ModelsManager {
static let sharedInstance = ModelsManager()
private init() {}
[...]
}
Run Code Online (Sandbox Code Playgroud)
在使用单例的视图控制器中,它被设置为一个惰性计算属性,如下所示:
class MyViewController: UIViewController {
lazy var Models = {
return ModelsManager.sharedInstance
}()
[...]
}
Run Code Online (Sandbox Code Playgroud)
我试图在我的 XCTestCase 中模拟 ModelsManager 单例:
[...]
func testSomething() {
let vc = MyViewController(nibName: "MyView", bundle: nil)
var mockModelsManager = ModelsManagerMock.sharedInstance
vc.Models = mockModelsManager
[... do something that calls a function in ModelsManager...]
expect(mockModelsManager.flag) == true // Using Nimble here
}
class ModelsManagerMock: ModelsManager {
var flag = false
override …Run Code Online (Sandbox Code Playgroud) 我有一个UIViewController自定义的UINavigationBar(继承自它的超类)。
在此控制器中,我实例化另一个控制器UIViewController并将其视图添加为我的视图中的子视图,如下所示:
// I believe this should be 'as LocationPermissionsInfoViewController' but it crashed badly that way. Any ideas?
var permissionsView = UIViewController(nibName:"LocationPermissionsInfoView", bundle: nil) as UIViewController
self.view.addSubview(permissionsView.view)
permissionsView.view.frame = self.view.bounds
Run Code Online (Sandbox Code Playgroud)
它LocationPermissionsInfoView是在 IB 中设计的,具有各种自动布局约束。但是,我希望该视图中存在的“contentView”遵守作为子视图添加的视图的顶部布局指南(准确地说是自定义导航栏的底部)。现在,IB 显然只允许我设置与界面中的顶级视图相关的约束。
关于如何实现这一目标有什么想法吗?理想情况下来自 IB 或LocationPermissionsInfoView控制器中的某个位置。