Я нашел, что самое чистое решение только для swift2 - создать категорию на NSRange:
extension NSRange {
func stringRangeForText(string: String) -> Range<String.Index> {
let start = string.startIndex.advancedBy(self.location)
let end = start.advancedBy(self.length)
return Range<String.Index>(start: start, end: end)
}
}
И затем вызвать его для функции делегирования текстового поля:
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let range = range.stringRangeForText(textField.text)
let output = textField.text.stringByReplacingCharactersInRange(range, withString: string)
// your code goes here....
return true
}
В другом ответе уже упоминалась серия Джастина Этериджа на TekPub, и это хорошо. Джастин также написал хороший пост в блоге, сравнивающий LINQ с циклами, на который стоит обратить внимание: http://www.codethinked.com/post/2009/06/15/Life-After-Loops.aspx#continue
Я много узнал об этом с помощью ReSharper. Функциональность ReSharper 5 в этом отношении значительно лучше, чем у 4, на самом деле ... предлагая и легко конвертируя циклы в цепочки методов LINQ.
Конечно, вы хотите, чтобы они тоже учились, поэтому важно, чтобы они НАПИСЫВАЛИ это, а также имели такие инструменты, которые помогали.
Я предлагаю вашим коллегам просто загрузить LINQPad .
В программе есть несколько руководств, которые должны охватывать основы, и это даст им среду, в которой они смогут увидеть результаты почти сразу.
Если это не обязательно должно быть бесплатно, отлично подойдет Mastering LINQ Series на Tekpub. Этот парень демонстрирует концепцию (например, цикл foreach для фильтрации данных) с использованием «обычного» кода C #, а затем с использованием LINQ.
Никакого L2S, но все основные концепции.
Кто-нибудь из вашей команды знаком с SQL? Я не хочу волноваться о Linq2SQL, но я обнаружил, что люди, знакомые с декларативной природой SQL (выражайте ЧТО вы хотите, а не КАК), похоже, быстрее понимают LINQ. Они могут помочь вам добраться до остальных.
Купите офису копию 100 копий C # In Depth Джона Скита. Он не только охватывает синтаксис LINQ и лямбда-выражения, но также является хорошим учебником для ознакомления людей с изменениями в языке, начиная с C # 1.