gpt4 book ai didi

ios - 无法将类型 'Range?' 的值转换为指定类型 'NSRange'(又名 '_NSRange')

转载 作者:搜寻专家 更新时间:2023-11-01 07:02:37 24 4
gpt4 key购买 nike

在将 Objective-C 代码更改为 Swift 代码期间,我遇到了以下错误。谢谢

func combinedName() -> String? {
let range: NSRange = name.range(of: brand)
if Int(range.length) > 0 {
return name
}
return "\(brand) \(name)"
}

error

我的 Objective-C 代码

- (NSString *)combinedName {
NSRange range = [self.name rangeOfString:self.brand];
if (range.length > 0) return self.name;
return [NSString stringWithFormat:@"%@ %@", self.brand, self.name];
}

最佳答案

不要直接翻译 Objective-C 代码。使用普通的 Swift 结构从头开始将其编写为 Swift 代码。

func combinedName() -> String {
if name.range(of: brand) != nil {
return name
} else {
return "\(brand) \(name)"
}
}

假设 namebrand 都不是可选的,返回类型不应该是可选的,因为你不会在任何情况下返回 nil情况。

您还可以使用 ?: 使代码更简单:

func combinedName() -> String {
return name.range(of: brand) != nil ? name : "\(brand) \(name)"
}

关于ios - 无法将类型 'Range<String.Index>?' 的值转换为指定类型 'NSRange'(又名 '_NSRange'),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50225654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com