В моем коде objectivec у меня есть:
@property (nonatomic, nullable) NSString* position;
быстро преобразуется в тип String. Могу ли я отключить это преобразование? Я также хотел бы использовать тип NSString в быстром
на данный момент мой быстрый код выглядит так:
(a.position as NSString?)?.intValue
Почему бы вам вместо этого не сделать Int(a.position)? Swift и Objective-C имеют много общего (помимо фреймворков Cocoa (Touch)), но у них также есть другая логика. Избегайте использования Swift в Objective-C или Objective-C в Swift.
«Я не использую Int (a.position), потому что думаю, что это может привести к сбою, в зависимости от строки» Любой пример этого сбоя?
@Larme Извините за недоразумение, правда не вылетает. Я помню, что сбой был, когда вместо NSString объект был NSNumber, а objc не сбой (потому что intValue доступен), но swift сделал





Невозможно отключить этот разговор. Но вы можете использовать Int(a.position ?? "") для преобразования String в Int. Это безопасно, потому что этот инициализатор не является обязательным.
Int ("3.2") возвращает nil, но я хочу, чтобы оно было равно 3 - аналогично intValue. Любое предложение?
Если position - десятичное число, то вы можете преобразовать его в Double, а после - в Int: Int(Double(a.position)).
@IlyaKharabet - За исключением того, что самое большое значение Int требует 19 десятичных цифр, а Double имеет точность только 15-17 десятичных цифр.
@KamenDobrev - проверьте наличие десятичной точки и преобразуйте только кусок строки перед точкой в целое число. Посмотрите на методы String, чтобы найти и разрезать точку. Не используйте математику с плавающей запятой, а затем усекайте ее до целого числа. Вы можете связать свой код как расширение на Int, чтобы вы могли написать, скажем, Int(objcIntValue: someString).
какой тип переменной или свойства вы хотите объявить?