При использовании раскадровки для управления анимацией убедитесь, что для второго параметра задано значение true, чтобы настроить анимацию как управляемую:
public void Begin(
FrameworkContentElement containingObject,
**bool isControllable**
)
Чтобы проверить, является ли объект числом (Int
в вашем случае), вы можете сделать две вещи:
Проверка типа через is
или as?
[1130 ]
Это проверяет только тип, а не содержимое
let isNumberType = "1" is Int
print(isNumberType) //false because "1" is of type String
Создание Int
через его инициализатор [1132 ]
Возвращает Int?
, потому что он может потерпеть неудачу, поэтому проверьте далее != nil
let something = "1"
let isNumber = Int(something) != nil
print(isNumber) //true because "1" can be made into an Int
ПРИМЕЧАНИЕ. Согласно вашему примеру, вы проверяете только четные элементы, поэтому мы будем использовать stride(from:to:by:)
Предполагая, что у вас есть массив String
с, мы можно использовать инициализатор Int
, чтобы проверить, может ли элемент string
быть числом, например:
func check(expression: [String]) -> Bool {
for idx in stride(from: 0, to: expression.count, by: 2) {
let isNumeric = Int(expression[idx]) != nil
if isNumeric == false {
return false
}
}
return true
}
check(expression: ["1", "A", "2", "B", "3", "C"]) //true
check(expression: ["1", "A", "2", "B", "E", "C"]) //false
Предполагая, что ваш массив имеет наберите [Any]
, и вы хотите напечатать, проверьте, чтобы альтернативные элементы были Int
, затем используйте is
, например, так:
func check(expression: [Any]) -> Bool {
for idx in stride(from: 0, to: expression.count, by: 2) {
let isNumeric = expression[idx] is Int
if isNumeric == false {
return false
}
}
return true
}
check(expression: [1, "A", 2, "B", 3, "C"]) //true
check(expression: [1, "A", 2, "B", "3", "C"]) //false
С [Any]
дело в том, что его элементы не могут быть подается непосредственно в инициализатор Int
, не внося его в o приемлемый тип.
Так что в этом примере, для простоты, мы просто проверяем, принадлежит ли объект точно типу Int
или нет.
Поэтому я сомневаюсь, что это соответствует вашему требованию.
Попробуйте это:
var str = "1234456";
let scanner = Scanner(string: str);
let isNumeric = scanner.scanInt(nil) && scanner.isAtEnd
if !isNumeric {
print("not numeric")
} else {
print("is numeric")
}
В целом, если вы просто хотите проверить, что данная строка является анализируемым целым числом, я рекомендую попробовать:
var expressions = ["1234456","abcd"];
for str in expressions {
if let isNumeric = Int(str) {
print("is numeric")
} else {
print("not numeric")
}
}