我有一个测试类,尝试使用NSURLConnection
访问Google。如果我试图使它通用,NSURLConnectionDataDelegate方法永远不会被调用。NSURLConnection委托方法在通用类中未被调用
class Remote<T: NSObject>: NSObject, NSURLConnectionDelegate, NSURLConnectionDataDelegate {
//class Remote: NSObject, NSURLConnectionDelegate, NSURLConnectionDataDelegate {
var data = NSMutableData()
func connect(query:NSString) {
var url = NSURL(string:"http://www.google.com")!
var request = NSURLRequest(URL: url)
var conn = NSURLConnection(request: request, delegate: self, startImmediately: true)
}
func connection(didReceiveResponse: NSURLConnection!, didReceiveResponse response: NSURLResponse!) {
LF.log("didReceiveResponse")
}
func connection(connection: NSURLConnection!, didReceiveData conData: NSData!) {
LF.log("didReceiveData")
self.data.appendData(conData)
}
func connectionDidFinishLoading(connection: NSURLConnection!) {
LF.log("didFinished")
//println(self.data)
}
deinit {
println("deiniting")
}
}
为了测试它(注释/取消注释第一/第二线比较):
let remote = Remote<NSObject>()
//let remote = Remote()
remote.connect("")
任何想法吗?
更新1:回答评论1,它是一个REST客户端,可以为您处理网络连接和解析。我写这博客后(因为它仍处于开发阶段),但给你这里的想法是从我的项目的一些演示代码:
let client = ICRestClient<ICCategoryModel>(api:IC.api.category_list)
client.func_array = {
(results: [ICCategoryModel]?, error: NSError?) -> Void in
block!(results, error)
}
client.execute()
而且ICCategoryModel是这样的:
class ICSubCategoryModel: ICModel {
var name: String?
var category_id: Int = 0
}
这个想法是,你传递了API URL,你得到一个数组(或错误)与一些反射对象,而不是Dictionary。它来自我的LSwift库,并支持各种身份验证方法(buildin参数,cookie,头文件,身份验证挑战等)。
什么是你创建一个通用类目的是什么?你用这种方法试图解决什么问题? – rdelmar
我添加了一个演示update1。它比CoreData更容易使用 - 主要思想是,在大多数情况下,我们只需要简单的技术,如JSON,Parse等,而XML,AWS等解决方案太复杂。然而,为了构建简单的解决方案,有时我们需要编写一些不常见的代码。 BTW'swift'比'objc'更不灵活,但我只是喜欢'swift'的语法。 –