Arrays 过滤';字符串';Swift中数组中元素的值
由于我刚刚开始我的冒险,通常是编程,特别是Swift,我无法解决过滤数组的问题 在我写这本书的过程中,我读到了一章,其中对数组进行了解释和分析 到目前为止,我在使用数组方面没有问题。以下是我学生书中的代码:Arrays 过滤';字符串';Swift中数组中元素的值,arrays,swift,string,ubuntu,filter,Arrays,Swift,String,Ubuntu,Filter,由于我刚刚开始我的冒险,通常是编程,特别是Swift,我无法解决过滤数组的问题 在我写这本书的过程中,我读到了一章,其中对数组进行了解释和分析 到目前为止,我在使用数组方面没有问题。以下是我学生书中的代码: var city = ["Boston", "London", "Chicago", "Atlanta"] let filtered = city.filter{$0.range(of:"o") != nil} 本应过滤带有字母“o”的城市,但编译时会显示此消息: error: value
var city = ["Boston", "London", "Chicago", "Atlanta"]
let filtered = city.filter{$0.range(of:"o") != nil}
本应过滤带有字母“o”的城市,但编译时会显示此消息:
error: value of type 'String' has no member 'range
那么这是否意味着我不能对字符串值使用.range
?
那么代码是什么样子的呢?
我使用ubuntu作为我的操作系统
提前感谢。您将收到此错误,因为不幸的是,范围
在Linux中不可用。如果您可以使用macOS
访问一台机器,这将起作用
正如@Hamish所说,我完全错了,您必须导入Foundation
,才能在String
上使用range
或contains
(即使您可以在String.characters上调用contains
)
将此行添加到代码的开头:
import Foundation
您是否导入了Foundation
?否,我正在处理一本书,因为这本书没有告诉我要这样做,所以我没有到书的这一点,我不需要导入任何东西,或者书中甚至没有关于导入任何东西的文字。请检查此项。您可以使用包含来检查字符串
是否有字符
让过滤=city.filter{$0.contains(“o”)}
不导入基础:让filtered=city.filter{$0.characters.contains(“o”)}
@vacawama是的,这也有效。谢谢。我也在那个沙箱上尝试了OP的代码,但也出现了同样的错误,尽管它在Xcode 8.3/Swift 3.1中的一个操场上运行得很好,我正在使用的这本书是专门为linux编程的,所以可能是作者的错误吗?不,@Bodeue,@Hamish是对的,你必须导入Foundation
,检查我的编辑。谢谢,它解决了它。现在我想知道为什么我要进口任何东西,这个“基础”是什么。我希望这将在以后的书中解释。