Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用泛型函数_Ios_Iphone_Swift_Generics_Alamofire - Fatal编程技术网

Ios 使用泛型函数

Ios 使用泛型函数,ios,iphone,swift,generics,alamofire,Ios,Iphone,Swift,Generics,Alamofire,我有下面的映射类。您将看到我使用了ObjectMapper和RealmSwift,因为我想将类也保存在Realm中 import Foundation import ObjectMapper import RealmSwift class LoginResponse: Object,Mappable { dynamic var status: Int = 0 dynamic var client: LoginData! required convenience in

我有下面的映射类。您将看到我使用了
ObjectMapper
RealmSwift
,因为我想将类也保存在Realm中

import Foundation
import ObjectMapper
import RealmSwift

class LoginResponse: Object,Mappable {

    dynamic var status: Int = 0
    dynamic var client: LoginData!

    required convenience init?(_ map: Map) {
        self.init()
    }

    func mapping(map: Map) {
        client <- map["client"]
        status <- map["status"]
    }
}
下面是APIRequest类:

import Foundation
import Alamofire
import ObjectMapper
import AlamofireObjectMapper
import RealmSwift


struct ApiRequest {
    let method: Alamofire.Method
    let path: String
    let parameters: [String: AnyObject]?
    let uiRealm = try! Realm()


    init(method: Alamofire.Method = .GET, path: String, parameters: [String: AnyObject]? = nil) {
        self.method = method
        self.path = "webservice/abc123/client/\(path)"

        self.parameters = parameters
    }

    func toObjectMapper<T: Mappable>() -> Object {
        let alomofireApiRequest = AlamofireApiRequest(apiRequest: self)
        Alamofire.request(alomofireApiRequest)
            .responseObject("") { (response: Response<T, NSError>) in
                let parsedObject = response.result.value as! Object
                try! self.uiRealm.write({ () -> Void in

                    self.uiRealm.add(parsedObject)
                })

               return parsedObject
        }
    }
}

有人能帮我吗?如果您需要更多信息,请询问

我没有看到完整的代码,正如编译错误所说,有两个问题,一个是函数中没有使用“t”,另一个是函数中没有返回

修复程序应与此类似:

    // No Return, the result is in the completion block.
func toObjectMapper<T: Mappable>(completion: (T)->Void) {
    let alomofireApiRequest = AlamofireApiRequest(apiRequest: self)
    Alamofire.request(alomofireApiRequest)
        .responseObject("") { (response: Response<T, NSError>) in

            // The parsedObject is already of class T
            let parsedObject = response.result.value
            try! self.uiRealm.write({ () -> Void in

                self.uiRealm.add(parsedObject)
            })

            completion(parsedObject)
    }
}
//不返回,结果在完成块中。
函数对象映射器(完成:(T)->Void){
让alomofireApiRequest=AlamofireApiRequest(APIRQUEST:self)
Alamofire.request(alomofireApiRequest)
.responseObject(“”){(响应:响应)在
//parsedObject已属于T类
让parsedObject=response.result.value
try!self.uiRealm.write({()->Void in)
self.uiRealm.add(parsedObject)
})
完成(parsedObject)
}
}

消息中的第一个错误非常清楚。编译器如何识别什么是T?您应该具有类型与T相关的参数和/或返回值。第二个是因为您返回了parseObject,而不应该返回。中的响应等同于中的响应->无效。。。所以你不应该从闭包中返回任何东西
Generic parameter 'T' is not used in function signature

Unexpected non-void return value in void function
    // No Return, the result is in the completion block.
func toObjectMapper<T: Mappable>(completion: (T)->Void) {
    let alomofireApiRequest = AlamofireApiRequest(apiRequest: self)
    Alamofire.request(alomofireApiRequest)
        .responseObject("") { (response: Response<T, NSError>) in

            // The parsedObject is already of class T
            let parsedObject = response.result.value
            try! self.uiRealm.write({ () -> Void in

                self.uiRealm.add(parsedObject)
            })

            completion(parsedObject)
    }
}