আমার একটি জেনেরিক ফাংশন রয়েছে যা একটি ওয়েব পরিষেবাতে কল করে এবং কোনও জিনিসে জেএসএন প্রতিক্রিয়াটিকে সিরিয়ালাইজ করে।
class func invokeService<T>(service: String, withParams params: Dictionary<String, String>, returningClass: AnyClass, completionHandler handler: ((T) -> ())) {
/* Construct the URL, call the service and parse the response */
}
আমি যা সম্পাদন করার চেষ্টা করছি তা হ'ল এই জাভা কোডের সমতুল্য
public <T> T invokeService(final String serviceURLSuffix, final Map<String, String> params,
final Class<T> classTypeToReturn) {
}
- আমি সঠিক অর্জনের চেষ্টা করছি তার জন্য কি আমার পদ্ধতির স্বাক্ষর রয়েছে?
- আরও সুনির্দিষ্টভাবে,
AnyClassকোনও পরামিতি টাইপ করার জন্য সঠিক জিনিসটি করা হচ্ছে? - পদ্ধতিটি কল করার সময়, আমি
MyObject.selfরিটার্নিং ক্লাস মান হিসাবে পাস করছি তবে আমি একটি সংকলন ত্রুটি পেয়েছি "" স্ট্রিং "টাইপ করতে এক্সপ্রেশনটির টাইপ '()' রূপান্তর করতে পারি না"
CastDAO.invokeService("test", withParams: ["test" : "test"], returningClass: CityInfo.self) { cityInfo in /*...*/
}
সম্পাদনা:
আমি object_getClassহোলএলএক্স দ্বারা উল্লিখিত হিসাবে ব্যবহার করার চেষ্টা করেছি, কিন্তু এখন আমি পেয়েছি:
ত্রুটি: "'সিটিআইএনফো টাইপ করুন' টাইপ প্রোটোকল 'যেকোনওবজেক্ট' এর সাথে মানায় না"
প্রোটোকল অনুসারে কি করা দরকার?
class CityInfo : NSObject {
var cityName: String?
var regionCode: String?
var regionName: String?
}
CastDAO.invokeService("test", withParams: ["test" : "test"]) { (ci:CityInfo) in }