Beta 3一切正常,现在出现一个奇怪的错误,而且我不知道如何解决它。尝试了所有类似问题的解决方案。
这是我的代码:
if !name.isEmpty {
var splitted: [String] = name.componentsSeparatedByString(" ")
for curPart in splitted {
if !curPart.isEmpty {
acronym += curPart.substringToIndex(1) //Error
}
}
if (acronym as NSString).length > 2 {
acronym = acronym.substringToIndex(2) //Error
}
}
两条标记线都给了我相同的错误:
类型“ String.Index”不符合协议“ IntegerLiteralConvertible”
有人能帮我吗?还是Beta 4有漏洞?谢谢!
在Beta 4中,Swift的String.Index处理再次发生了变化-
现在,Int
当String.Index
期望a时,您将无法提供。处理该问题的方法是String.Index
使用advance
方法创建所需的代码:
if !name.isEmpty {
var splitted: [String] = name.componentsSeparatedByString(" ")
for curPart in splitted {
if !curPart.isEmpty {
acronym += curPart.substringToIndex(advance(curPart.startIndex, 1))
}
}
if countElements(acronym) > 2 {
acronym = acronym.substringToIndex(advance(acronym.startIndex, 2))
}
}
所有这些都是基于确保正确处理Unicode字符串-由于不同的Unicode字符可以具有不同的大小,因此,纯整数索引将掩盖字符串不是随机访问的事实。
问题内容: 编译错误如下: 类型“ AnyObject”不符合协议“ SequenceType” 这种压力是什么? 谁能帮我很多忙! 问题答案: 苹果在Swift编程语言中指出: for-in循环针对范围,序列,集合或进度中的每个项目执行一组语句。 目前,它仅符合protocol ,因此您无法在其上使用for循环。如果要这样做,则必须执行类似以下操作:
问题内容: 尝试按照Apple文档(和教程化的)创建Launch Helper时,我似乎遇到了麻烦,原因是将Objective- C代码移植到Swift中…在此方面,谁的编译器再也不过分了案件。 该错误似乎始终是: 我尝试过在多个位置进行转换,以防万一我只是在处理一个多余的,古老的原语(由Obj- C或Core Foundation引入)而无济于事。 为了以防万一,我尝试投射响应: 产生错误: …
问题内容: 我有一个符合多种协议的Objective-C变量。 我将如何在Swift中代表这种类型? 问题答案: 这应该工作: 注意,必须快速使用NSObjectProtocol而不是NSObject。 以下是一些其他示例: 符合多种协议的对象数组: 具有符合多种协议的参数的功能: 对于3.1之前的Swift版本,请使用:
问题内容: 我试图在我快速编写的类上使用NSCoding协议,但是似乎无法弄清楚为什么当我实现所需的方法时,编译器会抱怨它“不符合协议NSCoding”: 这是一个错误还是我只是缺少一些东西? 问题答案: 如您在报告导航器中详细的编译器消息中所见,您的方法未正确声明: (在beta版本之间可能有所变化。)此外,该方法必须标记为: 在 Swift 3中 ,所需的方法是
问题内容: 为什么此Swift代码无法编译? 编译器说:“类型不符合协议”(或在Swift的更高版本中,“不支持将’P’用作符合协议’P’的具体类型”。) 为什么不?某种程度上,这感觉就像是语言上的一个漏洞。我意识到问题源于将数组声明为 协议类型 的数组,但这是不合理的事情吗?我认为协议确实可以帮助提供类型分层结构之类的结构吗? 问题答案: 编辑:使用Swift还要工作18个月,Swift是另一个
问题内容: 我正在尝试将泛型与协议混合在一起,而xD却变得非常困难 我在Android / Java项目中实现了某些架构,并且尝试将其重写以使其适合swift / iOS项目。但是我发现了这个限制。 ProtocolA ProtocolB ImplementProtocolA ImplementProtocolB 因此,当我尝试将ProtocolB设置为实现 ProtocolA的具体类型时,出现此