当前位置: 首页 > 面试题库 >

encodingOffset弃用

袁子瑜
2023-03-14
问题内容

在我的应用程序中,我有一些代码来获取中的主机范围URL。看起来像这样:

private func rangeOfHost(text: String) -> NSRange? {
    let url = URL(string: text)
    if let host: String = url?.host {
        if let range = text.range(of: host) {
            return NSRange(
                location: range.lowerBound.encodedOffset,
                length: range.upperBound.encodedOffset - range.lowerBound.encodedOffset
            )
        }
    }
    return nil
}

Xcode一直警告我'encodedOffset' is deprecated: encodedOffset has been deprecated as the most common usage is incorrect. Use utf16Offset(in:) to achieve the same behavior.。但是,我不清楚如何用这些建议替换那些encodingOffsets。有任何想法吗?


问题答案:

一个简单而建立一个正确的方式NSRangeRange<String.Index>是使用它的初始化:

public init<R, S>(_ region: R, in target: S) where R : RangeExpression, S : StringProtocol, R.Bound == String.Index

在您的情况下:

if let range = text.range(of: host) {
    return NSRange(range, in: text)
}


 类似资料:
  • 问题内容: 我刚刚在应用程序中添加了Hibernate的配置,而IntelliJ Idea抱怨此方言已被弃用: 似乎不是互联网上的明确解决方案,有什么建议吗? 问题答案: 您需要改用。 这在Javadoc中有记录: 不推荐使用。 改用PostgreSQL82Dialect 但是请注意,您应该使用与您使用的PostgreSQL JDBC驱动程序最匹配的方言(在此处列出)。例如,如果您使用的是Post

  • 问题内容: 今天,我决定将我的android应用程序从Java转换为Kotlin!:)但是,当我输入以下内容时,我感到非常惊讶: 然后Android Studio告诉我:“’getActionView(MenuItem!):View!’ 已弃用。Java中已弃用“ 因此,在问您解决方案之前,我先问谷歌解决方案是什么,我相信我找到了解决方案:“直接使用getActionView()”。 所以我像这样

  • 目前我正在开发一个带有三个菜单项的底部导航栏的应用程序。我曾使用来单击项目。但现在我面临的问题是该方法已贬值。 应用程序语言:Java 问题:“setOnNavigationItemSelectedListener(com.google.android.material.bottomnavigation.BottomNavigationView.OnNavigationItemSelectedLi

  • 由于API 27已弃用。对此最好的替代方案是什么? 在我的例子中,我知道需要使用之类的东西,但我不知道在我的代码中这需要去哪里。 我在班上得到了这些进口货: 但是 被划掉了。

  • 我一直在开发一个使用Google Drive API的Android应用程序。它最初是从这里的quickstart示例构建的。API调用的简化序列(此处未显示正确的错误处理)是: 它一直运行良好,我正准备发布我的应用程序。但是,在驱动器API更新之后,我突然收到一个警告 方法usingOAuth2(Context,String,String...)GoogleAccountCredential是不

  • Variable (已弃用) Variable 是早期添加到 RxSwift 的概念,通过 “setting” 和 “getting”, 他可以帮助我们从原先命令式的思维方式,过渡到响应式的思维方式。 但这只是我们一厢情愿的想法。许多开发者滥用 Variable,来构建 重度命令式 系统,而不是 Rx 的 声明式 系统。这对于新手很常见,并且他们无法意识到,这是代码的坏味道。所以在 RxSwift