繁体   English   中英

实例方法要求“ NSObject”符合

[英]Instance method requires that 'NSObject' conform

我扩展了RxSwift的Observable,并与Moya一起使用,因此我将其写成这样

/// JSON map to object
    /// - returns: Observable<T>
    func jsonMapObject<T: EVReflectable>(type: T.Type, forKeyPath: String? = nil) -> Observable<Result<T, ORMError>>  {

        return self.map { rawResult in

            guard let result = rawResult as? Result<JSON, ORMError> else {
                return .failure(ORMError.ORMParseJSONError)
            }

            switch result {
            case let .success(json):

                guard json != JSON.null,
                    let dict = json.dictionaryObject else {
                        return .failure(ORMError.ORMParseJSONError)
                }

                guard let object: T = self.dictMap(from: dict) as T else {
                    return .failure(ORMError.ORMCouldNotMakeObjectError)
                }

                return .success(object)

            case let .failure(error):
                return .failure(error)
            }

        }
    }

这样编写代码后,我在编辑器中收到一条错误消息,说

实例方法“ dictMap(from:forKeyPath :)”要求“ NSObject”符合“ EVReflectable”

我不知道如何再次进行,因为此错误不会消失

我的dictMap被写成

///

Create the object from the dictionary
    internal func dictMap<T: NSObject>(from: NSDictionary?, forKeyPath: String? = nil) -> T where T: EVReflectable{
        let instance: T = T()
        let parsedObject: T = ((instance.getSpecificType(from ?? NSDictionary()) as? T) ?? instance)
        let _ = EVReflection.setPropertiesfromDictionary(from ?? NSDictionary(), anyObject: parsedObject, forKeyPath: forKeyPath)
//        if self.statusCode > 300  {
//            instance.addStatusMessage(DeserializationStatus.Custom, message: "HTTP status code: \(self.statusCode)")
//        }
        return parsedObject
    }

您的函数func dictMap<T: NSObject>(from: NSDictionary?, forKeyPath: String? = nil) -> T where T: EVReflectable要求T为NSObject并符合EVReflectable。 为此,NSObject必须符合EVReflectable。

您可能只需要从上面删除: NSObject>

func dictMap<T>(from: NSDictionary?, forKeyPath: String? = nil) -> T where T: EVReflectable

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM