当前位置: 首页 > 知识库问答 >
问题:

Swift-使用哪种类型?NSString或String

莫河
2023-03-14

随着Swift的引入,我一直在努力了解这门新语言

我是一名iOS开发人员,会在应用程序中使用nsstring、NSInteger、nsdictionary等类型。我注意到在苹果的“the Swift Programming Language”电子书中,他们使用了Swift类型string、Int、dictionary

我注意到Swift类型没有(或者名称不同)Foundation类型所具有的某些功能。例如,nsstring具有lengts属性。但是我没有找到类似的Swift字符串

我在想,对于一个iOS应用程序,我应该仍然使用基础类型吗?

共有1个答案

卓俊晖
2023-03-14

您应该尽可能使用Swift本机类型。对语言进行了优化以使用它们,并且大多数功能在本机类型和foundation类型之间进行了桥接。

虽然StringNSString大多是可互换的,即您可以将String变量传递到接受NSString参数的方法中,反之亦然,但有些方法似乎还没有自动桥接。有关如何获取a字符串长度的讨论,请参阅本答案;有关使用containsstring()检查子字符串的讨论,请参阅本答案。(免责声明:我是这两个答案的作者)

我还没有完全研究其他数据类型,但我假设上面所述的某些版本也适用于array/NSArrayDictionary/NSDictionary以及Swift和NSNumber中的各种数字类型

每当您需要使用一个基础类型时,您可以使用它们显式地为变量/常量键入类型,如var str:NSString=“an NSString”中所示,也可以对现有的Swift类型的变量/常量使用bridgetoobjectiveC(),如str.bridgetoobjectiveC().lengty中所示。您还可以将字符串强制转换为NSString,方法是将字符串用作NSString

然而,这些技术显式使用基础类型或至少部分基础类型的必要性在将来可能会过时,因为根据语言引用中所述,例如string/nsstring桥应该是完全无缝的。

有关该主题的详细讨论,请参阅使用Swift with Cocoa和Objective-C:with Cocoa数据类型

 类似资料:
  • 问题内容: 我尝试解析返回json对象的api。我的问题是,在以下示例中,某些键有时是字符串,有时是类似“ Value”键的对象: 我的结构看起来像这样: 我必须告诉我我完全迷路了(是的,我是个迅速的初学者),我找不到解决我问题的方法。我知道我必须使用自定义init,但我不知道如何。 问题答案: 你可以试试

  • 问题内容: (我很惊讶无法在stackoverflow上找到这个问题,我只能归咎于糟糕的谷歌搜索,必须指出所有重复的问题…) 这是一个玩具类,它返回与您放入的玩具相反的东西。目前,它适用于整数,但只需要很小的改动就可以适用于String。 我想做的是使类通用,但仅适用于两个或三个可能的类型。所以我想写的是: 正确的语法是什么?我的Google-fu让我失败了… :( 编辑:似乎 没有 正确的语法,

  • 问题内容: 我正在尝试决定要选择哪种mime类型来返回mp3数据(由php提供) 根据此mime类型列表:http : //www.webmaster-toolkit.com/mime-types.shtml 这些之间有什么区别,我应该使用哪个? 问题答案: 最好的选择是使用RFC定义的 mime-type 。

  • 问题内容: 我正在尝试通过Java代码(hibernate)从MySQL DB获得MD5加密的通行证。但是我既不能得到String也不能得到任何合理的Java类型。 我得到的唯一消息是此无用的消息: java.lang.ClassCastException:[B不能转换为com.mysql.jdbc.Blob (或我尝试转换为的任何Java类型)。 这是我的方法: 这是完整的堆栈跟踪: 问题答案:

  • 我真的不知道如何在Swift中声明变量,我有四个选项: 我只想声明一个float而不指定一个值,最好的方法是什么?

  • 问题内容: 似乎JSON默认编码为UTF-8,Spring MVC 默认返回 ,很难更改。 问题答案: 根据RFC 4627 JSON文本应以Unicode编码。默认编码为UTF-8。 它继续描述了如何检测不同的UTF- *编码,这表明不支持其他编码。 “ SHALL”表示此处的绝对要求(请参阅RFC 2119)。 而且真的是没有理由使用与JSON非UTF编码(如任何可以处理JSON可以 肯定 处