2015-07-08 2 views
0

Я хочу преобразовать следующую функцию void, записанную в объективе-c, в swift, но она не будет работать так, как я ее делаю. В основном это неправильно с шагом 1,2,4 и 5, потому что я не знаю, как мне его перевести.Управление выбором в текстовом наборе с помощью swift

-(void)applyStyletoSelection:(NSString *)style{ 
    // 1. Get the range of the selected text. 
    NSRange range = [_textView selectedRange]; 

    // 2. Create a new font with the selected text style. 
    UIFont *styledFont = [UIFont preferredFontForTextStyle:style]; 

    // 3. Begin editing the text storage. 
    [_textView.textStorage beginEditing]; 

    // 4. Create a dictionary with the new font as the value and the NSFontAttributeName property as a key. 
    NSDictionary *dict = @{NSFontAttributeName : styledFont}; 

    // 5. Set the new attributes to the text storage object of the selected text. 
    [_textView.textStorage setAttributes:dict range:range]; 

    // 6. Notify that we end editing the text storage. 
    [_textView.textStorage endEditing]; 
} 

это, насколько я получил, но я уверен, что это неправильно:

func applyStyleToSelection(style: NSString) { 
    //1 
    let range = textInput.selectedRange 
    //2 
    let styledFont = UIFont.preferredFontForTextStyle(style as String) 
    //3 
    textInput.textStorage .beginEditing() 
    //4 
    let dict: [String] = ["styledFont"] 
    //5 
    //Could not find an overload for 'init' that accepts the supplied arguments 
    textInput.textStorage .setAttributes([String() : dict]?, range: range) 
    //6 
    textInput.textStorage .endEditing() 

} 

Может кто-нибудь помочь мне преобразовать это стрижа? Ты бы определенно мне очень помог!

+1

Обновите свой вопрос, используя свой код Swift. Объясните, какие у вас проблемы с переводом. – rmaddy

+0

ОК, вы добавили код Swift. Теперь вам нужно рассказать нам, какая у вас проблема. Просто сказать, что вы уверены, что это неправильно, не помогает. Будьте конкретны в отношении ваших проблем и проблем, которые возникают у вас с кодом Swift по сравнению с кодом Objective-C. – rmaddy

+0

Я действительно не знаю, в чем проблемы. Вот почему я прошу помощи на этом форуме. Я довольно новый, чтобы быстро, поэтому я не знаю, как перевести такую ​​функцию с объективной-с на быструю. В этот момент проблема возникла здесь: «var dict = NSFontAttributeName (styledFont)» В нем говорится: «Невозможно вызвать« NSFontAttributeName »с помощью списка аргументов типа« (UIFont) » – user3638160

ответ

0

Вы можете использовать родные быстрые типы: String, а не NSString.

Это dict Переменная на самом деле не словарь в вашем переводе.

Избегайте использования var для объектов, которые вы никогда не мутируете.

Вы никогда не устанавливали атрибуты шрифта в свою строку, это большая причина, почему он не работает.