আমার একটি জেনেরিক ফাংশন রয়েছে যা একটি ওয়েব পরিষেবাতে কল করে এবং কোনও জিনিসে জেএসএন প্রতিক্রিয়াটিকে সিরিয়ালাইজ করে।
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 }