Ответ 1
В swift2 они внесли некоторые изменения на count
это код для быстрого 1.2:
let test1 = "ajklsdlka"//random string
let length = count(test1)//character counting
так как swift2 код должен быть
let test1 = "ajklsdlka"//random string
let length = test1.characters.count//character counting
Чтобы найти длину массива.
Это происходит, главным образом, в swift 2.0, потому что String
больше не соответствует протоколу SequenceType
, а String.CharacterView
делает
Имейте в виду, что он также изменил способ повторения в массиве:
var password = "Meet me in St. Louis"
for character in password.characters {
if character == "e" {
print("found an e!")
} else {
}
}
Так что будьте очень осторожны, хотя, скорее всего, Xcode даст вам ошибку для таких операций, как этот.
Итак, вот как должен выглядеть ваш код, чтобы исправить эту ошибку (не можете вызывать "count" с помощью списка аргументов типа "(String)" ):
let index = rgba.startIndex.advancedBy(1)
let hex = rgba.substringFromIndex(index)
let scanner = NSScanner(string: hex)
var hexValue: CUnsignedLongLong = 0
if scanner.scanHexLongLong(&hexValue)
{
if hex.characters.count == 6 //notice the change here
{
red = CGFloat((hexValue & 0xFF0000) >> 16) / 255.0
green = CGFloat((hexValue & 0x00FF00) >> 8) / 255.0
blue = CGFloat(hexValue & 0x0000FF) / 255.0
}
else if hex.characters.count == 8 //and here
{
red = CGFloat((hexValue & 0xFF000000) >> 24) / 255.0
green = CGFloat((hexValue & 0x00FF0000) >> 16) / 255.0
blue = CGFloat((hexValue & 0x0000FF00) >> 8) / 255.0
alpha = CGFloat(hexValue & 0x000000FF) / 255.0
}