Форум программистов, компьютерный форум, киберфорум
Наши страницы

Swift dictionary extension - Swift

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Swift MapKit с overlay OSM http://www.cyberforum.ru/swift/thread1440153.html
Доброго времени суток! Есть ряд вопросов связанных с MKOverlay 1) Смогу ли я получить точные координаты используя overlay 2) Сначала грузит apple-map's, а потом подгружает мой overlay. Как это...
Swift MapKit Objective-C -> Swift код Доброго времени суток всем! Помогите в вопросе: нужно использовать OSM карты с MapKit я нашел код на ObjC, помогите переделать на swift или подскажите другие методы как подключить OSM // Place... http://www.cyberforum.ru/swift/thread1439265.html
Визуализация Swift
Подскажите пожалуйста, как при нажатии на кнопку изменить её цвет, цвет текста в ней или фон?:)
Swift Условие с интервалом
Здравствуйте, такая проблемка: Нужно сделать конструкцию если переменная1 на промежутке от 0 до 100 и переменная2 на промежутке от -20 до 12 { то действие1 } иначе { действие2 }
Swift Дружит ли swift с геопозицией? http://www.cyberforum.ru/swift/thread1433315.html
Здравствуйте, может кто-то знает, есть ли возможность взаимодействовать с определением геопозиции?
Swift Selected img размеры Подскажите какого размера мне сделать картинки для выбора табБарИтема: лдля 4го, 5го и 5s подходит размер 80х49 а вот для 6го и 6+ пробовал 160х98 но не помогает подскажите как правильно сделать... подробнее

Показать сообщение отдельно
Pro2005
44 / 44 / 3
Регистрация: 27.05.2013
Сообщений: 163

Swift dictionary extension - Swift

08.05.2015, 10:27. Просмотров 857. Ответов 0
Метки (Все метки)

Помогите разобраться с таким вопросом. У меня была категория для NSDictionary с таким методом
Objective-C
1
2
3
4
5
6
7
8
9
10
11
- (NSString *)jsonString {
    NSError *error;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:self
                                                       options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string
                                                         error:&error];
    if (error == nil) {
        return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
    }
    NSAssert(error, @"error");
    return @"";
}
Сейчас я хочу переписать этот метод исп swift... что я делаю:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
extension Dictionary {
    
    var JSONString: String {
        var error: NSError?
        var jsonData: NSData? = NSJSONSerialization.dataWithJSONObject(self, options: NSJSONWritingOptions.PrettyPrinted, error: &error)
        if error == nil {
            return NSString(data: jsonData!, encoding: NSUTF8StringEncoding) as! String
        }
        return ""
    }
    
}
Но получаю ошибку: Cannot invoke 'dataWithJSONObject' with an argument list of type '(Dictionary<Key, Value>, optionsNSJSONWrittingOptions, error: inout NSError?)'

Как я понимаю проблема кроется в передачи 'self' в метод dataWithJSONObject
т.к код вида
Objective-C
1
2
var test = ["test":"test"]
        var jsonData: NSData? = NSJSONSerialization.dataWithJSONObject(test, options: NSJSONWritingOptions.PrettyPrinted, error: &error)
проблем не вызывает... Что я упускаю ? Почему мой код не работает... кто-то может мне объяснить

Добавлено через 10 часов 35 минут
Вроде понял в чем причина...
Сигнатура метода dataWithJSONObject is:
Objective-C
1
dataWithJSONObject(obj: AnyObject, options opt: NSJSONWritingOptions, error: NSErrorPointer) -> NSData?
В документации сказано:
"AnyObject can represent an instance of any class type."
Но так как:
"Swift’s String, Array, and Dictionary types are implemented as structures."
Как я понял мне нужно создать Dictionary который совместим с
Objective-C
1
NSDictionary ([NSObject: AnyObject])
Вот что у меня вышло:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
extension Dictionary {
    
    var JSONString: String {
        var error: NSError?
        var dictionary: [String: AnyObject] = [:]
        
        for (key, value) in self {
            dictionary["\(key)"] = "\(value)"
        }
        
        var jsonData: NSData = NSJSONSerialization.dataWithJSONObject(dictionary, options: NSJSONWritingOptions.PrettyPrinted, error: &error)!
        if error == nil {
            return NSString(data: jsonData, encoding: NSUTF8StringEncoding)! as String
        }
        return ""
    }
    
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.