我已经阅读了@mattt的几个教程,README,但无法弄清楚几件事情。 在真实世界API中URLRequestConvertible的正确用法是什么? 看起来好像我将通过为所有API实现URLRequestConvertible协议来创build一个路由器 – 它几乎不可读。 我应该创build一个路由器每个端点? 第二个问题很可能是由于缺乏Swift语言的经验造成的。 我不明白为什么使用enum来build立路由器? 为什么我们不使用静态方法的类? 这里是一个例子(来自Alamofire的README) enum Router: URLRequestConvertible { static let baseURLString = "http://example.com" static let perPage = 50 case Search(query: String, page: Int) // MARK: URLRequestConvertible var URLRequest: NSURLRequest { let (path: String, parameters: [String: AnyObject]?) = { switch self { case .Search(let query, let page) where page > […]
在Objective-C中,可以指定符合协议的类作为方法参数。 例如,我可以有一个只允许符合UITableViewDataSource的UIViewController的方法: – (void)foo:(UIViewController<UITableViewDataSource> *)vc; 我找不到在Swift中这样做的方法(可能还不行)。 你可以使用func foo(obj: protocol<P1, P2>)来指定多个协议,但是如何要求该对象也是一个特定的类?
我想检索请求失败的HTTP响应状态码(例如400,401,403,503等)(理想情况下也是成功的)。 在此代码中,我正在使用HTTP Basic执行用户身份validation,并希望能够在用户键入密码时向用户发送身份validation失败的信息。 Alamofire.request(.GET, "https://host.com/a/path").authenticate(user: "user", password: "typo") .responseString { (req, res, data, error) in if error != nil { println("STRING Error:: error:\(error)") println(" req:\(req)") println(" res:\(res)") println(" data:\(data)") return } println("SUCCESS for String") } .responseJSON { (req, res, data, error) in if error != nil { println("JSON Error:: error:\(error)") println(" req:\(req)") println(" res:\(res)") println(" […]
在Swift中,有没有一种聪明的方法来使用Array上的高阶方法来返回5个第一个对象? 这样做的obj-c方法是保存一个索引,并通过数组增量索引for循环,直到它是5,并返回新的数组。 有没有办法做到这一点与filter , map或reduce ?
我试图从string中删除html标签,以便我可以输出干净的文本。 [实际上这个工作] let str = string.stringByReplacingOccurrencesOfString("<[^>]+>", withString: "", options: .RegularExpressionSearch, range: nil) print(str) 编辑:斯威夫特3 let str = string.replacingOccurrences(of: "<[^>]+>", with: "", options: .regularExpression, range: nil) print(str)
有没有办法在Swift中使用反向范围? 例如: for i in 5…1 { // do something } 是一个无限循环。 我知道我可以用1..5代替,计算j = 6 – i并用j作为我的索引。 我只是想知道是否有更清晰的文字?
我怎么能做这样的事情? 从数组中取前n个元素: newNumbers = numbers[0..n] 目前得到以下错误: error: could not find an overload for 'subscript' that accepts the supplied arguments 编辑: 这是我正在工作的function。 func aFunction(numbers: Array<Int>, position: Int) -> Array<Int> { var newNumbers = numbers[0…position] return newNumbers }
Swift文档说, 类 , 结构和枚举都可以符合协议,我可以达到一致的地步。 但是我不能让这个枚举类似于类和结构的例子: protocol ExampleProtocol { var simpleDescription: String { get set } mutating func adjust() } class SimpleClass: ExampleProtocol { var simpleDescription: String = "A very simple class." var anotherProperty: Int = 69105 func adjust() { simpleDescription += " Now 100% adjusted." } } var a = SimpleClass() a.adjust() let aDescription = […]
我想从string中删除第一个字符。 到目前为止,我提出的最简洁的东西是: display.text = display.text!.substringFromIndex(advance(display.text!.startIndex, 1)) 我知道我们不能用Int来索引一个string,因为Unicode,但是这个解决scheme看起来非常冗长。 有没有另外一种方法可以忽略?
我正在使用从照片店的颜色的RGB值,并在xcode中使用相同的值。颜色R-160,G-97,B-5 …在Photoshop中的颜色显示为淡黄色,但在Xcode时,当我使用 myLabel.textColor= [UIColor colorWithRed:160 green:97 blue:5 alpha:1] ; 颜色显得发白。 为什么这种差异正在发生?