#objective-c #nsdictionary #swift
#objective-c #nsdictionary #swift
Вопрос:
У меня есть следующее imageMap
, которое возвращает NSDictionary
внутри Class
вызываемого WXCondition
:
(NSDictionary *)imageMap {
// 1
static NSDictionary *_imageMap = nil;
if (! _imageMap) {
// 2
_imageMap = @{
@"01d" : @"weather-clear",
@"02d" : @"weather-few",
@"03d" : @"weather-few",
@"04d" : @"weather-broken",
@"09d" : @"weather-shower",
@"10d" : @"weather-rain",
@"11d" : @"weather-tstorm",
@"13d" : @"weather-snow",
@"50d" : @"weather-mist",
@"01n" : @"weather-moon",
@"02n" : @"weather-few-night",
@"03n" : @"weather-few-night",
@"04n" : @"weather-broken",
@"09n" : @"weather-shower",
@"10n" : @"weather-rain-night",
@"11n" : @"weather-tstorm",
@"13n" : @"weather-snow",
@"50n" : @"weather-mist",
};
}
return _imageMap;
}
Затем у меня есть следующий метод, который возвращает imageMap
метод:
- (NSString *)imageName {
return [WXCondition imageMap][self.icon];
}
Я пытаюсь преобразовать эти методы в Swift, и пока у меня есть следующее:
func JSONKeyPathsByPropertyKey() -> NSDictionary {
return {
"date": "dt",
"locationName": "name",
"humidity": "main.humidity",
"temperature": "main.temp",
"tempHigh": "main.temp_max",
"tempLow": "main.temp_min",
"sunrise": "sys.sunrise",
"sunset": "sys.sunset",
"conditionDescription": "weather.description",
"condition": "weather.main",
"icon": "weather.icon",
"windBearing": "wind.deg",
"windSpeed": "wind.speed"
}
}
func imageName() -> NSString {
return "" //[WXCondition imageMap][self.icon];
}
Не совсем уверен, как правильно вернуть an NSDictionary
.
Ответ №1:
Метод называется class
методом. В Swift вы используете ключевое class
слово . Если вам нужно NSDictionary
, вы можете создать обычный словарь, а затем просто использовать as
ключевое слово (вы также можете связать его с objective c, но это более явно). Итак, это то, что вы получите в итоге:
class func blah() -> NSDictionary {
return [
"date": "dt",
"locationName": "name"
// ...
] as NSDictionary
}
Ваша вторая функция (хотя я не вижу много информации о ней), вероятно, может быть просто изменена на что-то вроде: return WXCondition.imageMap()[self.icon]
(возможно, вам потребуется включить as NSString
в зависимости от того, откуда поступает информация и что вы пытаетесь с ней сделать)
Ответ №2:
Попробуйте это:
class A {
class func myDict() -> NSDictionary {
var occupations = [
"Malcolm": "Captain",
"Kaylee": "Mechanic",
]
return NSDictionary(dictionary: occupations)
}
}
println("Test = (A.myDict())")