草庐IT

6、Arrays类

全部标签

arrays - 从单例创建一个通用数组

我想用我的代码将我的数组变成通用的。说到泛型,我是新手。这是我的代码:classAPIServices{staticletyoutubeBaseURL="https://www.googleapis.com/youtube/v3/search"staticletshared=APIServices()funcfetchVideo(name:String,completionHandler:@escaping([Item])->()){letapiKey="mykey"letparams=["part":"snippet","q":"tausiyah\(name)","key":apiK

arrays - 在 Swift 中读取 JSON 中的嵌套数组和元组

我有一些数据是通过JSON传递的,它是一个包含数组的元组数组,我无法从中提取数据。我尝试转换为不同的类型,但唯一有效的是[Any]并且我无法进一步分解它。JSON:{...//stuffthatIcaneasilyread,like"WIDTH":33,..."WIDTHS_ROI_PAIRS":[[80,[0,0,200,160]],[145,[0,240,100,60]],[145,[100,240,100,60]]]}它要进入的结构:structWidthRoiPair:Codable{letwidth:Intletroi:[Int]}我想做的(不行,当作伪代码):letwidt

arrays - 如果我不提供类型注释,声明的 Swift 空数组将被视为 NSArray

当我在使用SwiftArray时遇到了一个问题。下面是我的实验:variArray=[]//HereifIseethetypedetailsinquickhelpitisofNSArraytype.varmyArray=[Int]()//HereifIseethetypedetailsinquickhelpitisofSwiftArraytype.现在如果我像下面这样检查ifiArrayisNSArray{//itgiveserrorsayingitisalwaystrue,whichiscorrect.println("Confused")}ifiArrayisArray{//Her

arrays - Swift 中带有数组的 For-In 循环中迭代器元素的可变性

我在Swift3.0中有一些代码,用于尝试更新元素数组中的属性...forpointinlistOfPoints{varpointInFrame:Float=Float(point.position.x*sensorIncomingViewPortSize.width)+Float(point.position.y)point.status=getUpdateStatus(pointInFrame)}但是我得到一个编译错误:'无法分配给属性:'point'是一个'let'常量'[第3行]在Swift中是否有任何方法可以使迭代器(点)可变,例如如何将“inout”用作函数参数?或者您应该

arrays - Swift 3 - 使类可迭代

考虑我的两个类://Person.swiftclassPerson{varparents:Parents?//...}//Parents.swift.Onlyacollectionofparentswithsomehelpermethods.classParents{varparents=[Person]()//...}如何使用parents的迭代器让Parents在for循环中进行迭代。这不是真实世界的应用程序。我只是好奇。只是想使用forparentinmyParents而不是forparentinmyParents.parents。 最佳答案

arrays - 有没有一种简单的方法来计算两个数组之间的差异

这个问题在这里已经有了答案:Howtomultiplytwoarrayselement-wise(5个答案)关闭3年前。我正在尝试计算Swift中两个数组中的值之间的差异。我想减去两个数组之间每个索引处的值。我尝试执行以下操作:vararray1:[Double]=[1,2,3,4,5]vararray2:[Double]=[2,3,4,5,6]varresult=array2-array1预期答案:result=[1,1,1,1,1]我收到以下错误消息:Binaryoperator'-'cannotbeappliedtotwo'[Double]'operands以下有效:vararr

arrays - 为什么不能在属性观察器 didSet 中更改 Swift 数组?

Swift的Array好像不会经过didSet,为什么?varintArray:[Int]=[]{didSet{intArray+=[0]}}ifintArray.count==0{println("WhyisintArraynotbeingaltered?")} 最佳答案 willSet和didSet在变量首次初始化时不会被调用,所以这是正常行为,并且对所有属性类型都有效-数组没有区别。在Playground上试试这个:varintArray:[Int]=[]{didSet{intArray+=[0]}}intArray=[]in

arrays - 在 Swift 中, append 数组的效率如何?

如果您的数组在整个程序过程中的大小都非常大,那么将数组声明为它将达到的最大大小然后控制您的程序可以访问多少数组会更有效,或者在整个程序过程中非常频繁地更改数组的大小? 最佳答案 来自Swiftheaders,这是关于阵列增长和容量的:Whenanarray'scontiguousstoragefillsup,newstoragemustbeallocatedandelementsmustbemovedtothenewstorage.Array,ContiguousArray,andSliceshareanexponentialgro

arrays - 使用 unicode 字符串对数组进行排序

我有一个包含3个名称的数组。varpatients=["KundKarlsson","TestVidbehov","TestÖvrigt"]我需要按字母顺序对这些名称进行排序。这是它应该被订购的结果。昆德·卡尔森测试视频行为测试Övrigt我像这样对数组排序patients.sort({$0但我得到了错误的顺序。昆德·卡尔森测试Övrigt测试视频行为我假设这是由那个unicode字母Ö引起的.当字符串中有unicode字符时,有没有办法处理排序?谢谢。 最佳答案 我想Ö在英语中被视为O,但这可能不适用于所有语言。您可以使用以下内容

arrays - Swift 数组循环一次,写很多

考虑以下愚蠢、简单的示例:letarr=["hey","ho"]letdoubled=arr.map{$0+$0}letcapitalized=arr.map{$0.capitalizedString}如您所见,我以多种方式处理相同的初始数组,以便最终得到多个已处理的数组。现在假设arr很长,并且我有许多这样的进程生成许多最终数组。我不喜欢上面的代码,因为我们循环多次,每次map调用一次。我宁愿只循环一次。现在,显然我们可以通过蛮力来处理这个问题,即从多个可变数组开始并在每次迭代中写入所有这些数组:letarr=["hey","ho"]vardoubled=[String]()varc