这似乎是iOS 11或Xcode 9的错误,因为这在以前的版本中有效。我正在尝试解析一个长度为英尺和英寸的字符串,例如:37'6“。当我尝试使用命令找到英寸符号(双引号)时:
add(0)
Launch(0)
返回范围时,该位置为空指针,长度为0而不是长度为1的字符位置。还有其他人注意到这个吗?我不确定周围的工作是什么(除了让用户以英尺为单位输入小数)。
谢谢! 罗布
答案 0 :(得分:1)
粗略的Google搜索显示iOS 11 includes a “Smart Quotes” feature that automatically turns your straight quotes into curly quotes。因此,您的字符串可能包含“
或”
而不是"
,这就是您的搜索无法找到它的原因。
解决方案:制作一个包含NSCharacterSet
,"
,“
和”
的{{1}}(因为后者是,你知道,实际上是正确的)英寸符号),然后使用ʺ
搜索它,而不是-[NSString rangeOfCharacterFromSet:]
。通过这种方式,您可以找到角色,无论其形式如何。
或者,通过将-[NSString rangeOfString:]
属性设置为UITextField
,似乎可以为个人UITextView
或smartQuotesType
关闭“智能引号”。
(顺便说一下,你是否注意到这个答案中的所有撇号和引号都是非常卷曲的?那注意细节怎么样?呃?)