У меня сбой в этом методе расширения String
:
func imageSize() -> CGSize {
// self = "https://s3-eu-west-1.amazonaws.com/mimg.haraj.com.sa/userfiles30/2018-8-6/524x334-1_-E7VSb5T20mOouX.jpg"
var width = 0
var height = 0
let split0 = self.split(separator: "/")
if split0.count > 0 {
let split1 = split0.last?.split(separator: "-")
if (split1?.count)! > 0 {
let split2 = split1?.first?.decomposedStringWithCanonicalMapping.split(separator: "x")
width = (split2?.first?.decomposedStringWithCanonicalMapping.toInt())!
if (split2?.count)! > 1 {
// let split2 = split1![1].decomposedStringWithCanonicalMapping.split(separator: "-")
height = (split2?.last?.decomposedStringWithCanonicalMapping.toInt())!
}
}
}
return CGSize(width: width, height: height)
}
Отказ находится на линии return CGSize(width: width, height: height)
Я создал NSString
версию, подобную этой, чтобыиспользуйте тот же метод выше:
@objc extension NSString {
func imageSize1() -> CGSize {
return (self as String).imageSize()
}
}
Затем он вызывается из кода obj-c:
CGSize imageSize = [url imageSize1];
Примеры URL:
https://s3 -eu-west-1.amazonaws.com / mimg.haraj.com.sa / userfiles30 / 2019-02-07 / 675x900-1_-CdC62Y2hcV7208.jpg
https://s3-eu-west-1.amazonaws.com/mimg.haraj.com.sa/userfiles30/2019-02-07/675x900-1_-697e3no8ec2E1I.jpg
https://s3 -eu-west-1.amazonaws.com/mimg.haraj.com.sa/userfiles30/2019-02-07/675x900-1_-8Af5D20wh9b62z.jpg
Что делает этот метод imageSize()
что он анализирует размер изображения из URL.Указанные выше URL содержат размеры 675x900 -> widthxheight.
В редких случаях мы встречаемся с URL-адресом, где нет информации о размере, а URL-адрес не соответствует указанному выше формату.Поэтому, если размер не найден, возвращается CGSize = (0 , 0)
.
Я протестировал этот метод на всех ожидаемых сценариях.Но по ряду причин метод вызывает сбои.Может быть, я что-то упустил / испортил.
Вот ссылка на Crashlytics выпуск .
Любая помощь будет оценена.