草庐IT

副本Replication

全部标签

arrays - 如何避免快速创建对象数组的副本

我有一个包含一种对象的数组字典:数据库记录。每个数组就像一个表,与字典中的一个键(表名)相关联。我的问题是:如何更新表(删除记录、添加记录等)而不制作表的任何临时副本,就像我对NSArrays的NSDictionary所做的那样?目前,我这样做:funcaddRecord(theRecord:DatabaseRecord,inTabletableName:String){ifvartable=self.database[tableName]{table.append(theRecord)self.database[tableName]=table}else{self.database[

swift - 在 Swift 中制作相同类型字典的空副本

在我的classvar部分,我有类似的东西:classFoobar{varthings:[String:Thing]=[:]...}稍后,我可能会有一个函数想要创建相同类型的字典。但它不是直接从原始派生的,所以我不能使用一些内置函数直接制作它。所以我最终还是重复了一遍varnewThings[String:Thing]=[:]是否有一些语法/方式可以让我做类似的事情varnewThing=self.things.emptyCopy()这样我就不必重复类型,它只是与原始变量相同的类型注释? 最佳答案 您可以使用dynamicType来

arrays - 是否有确保 Swift 数组副本的正确方法?

例如,当通过UnsafeMutablePointer操作底层数据时......//UsingSwift2.2importFoundationleta=[1,2,3]varaCopy=aletaCopyPointer=UnsafeMutablePointer(aCopy)letb=[4,5,6]letbPointer=UnsafePointer(b)letbData=NSData(bytes:bPointer,length:sizeof(Int)*b.count)bData.getBytes(aCopyPointer,length:sizeof(Int)*b.count)print(a)

swift - 是否可以通过引用而不是副本将数组分配给类属性?

背景:我设计了一个TableViewDataSource类,它提供了UITableViewDataSource和UITableViewDelegate的实现。您实例化TableViewSection对象,这些对象被传递给TableViewDataSource,用于配置单元格、节标题、处理选择、行插入等。TableViewSection对象有一个名为dataSource:[AnyObject]?的属性,设置后用于计算该部分中的行数,并提供单元格配置block的对象://getthesection,dequeueacellforthatsection,retrievetheitemfrom

swift - NSCopying 副本(带有 :) - Does it really need to return Any?

有没有什么方法可以使用NSCopying而返回的对象不是Any类型?它总是迫使我施法。这似乎很奇怪。我正在复制对象,Swift难道不应该根据copy这个词的定义知道它是同一类型吗?是否有另一种方法来复制我不知道的对象,或者是否有一些我缺少的“陷阱”需要这个。这个类很简单,比如:classPerson{varname:Stringvarage:Int}它必须是一个类,因为我需要继承。例子:varjohn=Person(name:"John",age:30)varjohnsClone=john.copy()as!Person我想我可以创建一个接受现有对象的初始化程序,但这在语义上似乎不如“

Swift 计算属性返回底层数组的副本

我有一个用Objective-C编写的模型类,我正在将其转换为Swift。它包含一个NSMutableArray在内部,但是getter的方法签名以及实际返回值是NSArray.调用时,它会创建一个不可变副本以返回。本质上,我希望调用者能够迭代/检查容器,但不能修改它。我有这个测试片段:classContainer{internalvarmyItems=[String]()funcsayHello(){"Ihave:\(myItems)"}}letcont=Container()cont.myItems.append("Neat")//["Neat"]cont.sayHello()//

Java:如何制作对象数组的副本?

现在,我有一个Point对象数组,我想制作一个该数组的COPY。我试过以下方法:1)Point[]temp=mypointarray;2)Point[]temp=(Point[])mypointarray.clone();3)Point[]temp=newPoint[mypointarray.length];System.arraycopy(mypointarray,0,temp,0,mypointarray.length);但所有这些方法都证明只是为temp创建了mypointarray的引用,而不是副本。比如我把mypointarray[0]的x坐标改成1(原来是0),temp[0

java - 如何制作 BufferedReader 的副本?

我正在使用BufferedReader构造函数来创建现有BufferedReader的新副本。BufferedReaderbuffReader=newBufferedReader(originalBuffReader);新的buffReader工作正常,但是当我执行originalBuffReader.readLine()时,它给了我null。有没有其他方法可以在不影响我原来的BufferedReader的情况下制作新的bufferReader。仅供引用:我将bufferReader作为我方法的输入;而且我无权访问源代码。 最佳答案

java - 如何命名作为参数副本的变量?

我有一个方法可以处理Collection作为参数传入。这Collection将被修改,因此我认为最好先复制它。如何命名参数和局部变量,例如nodes在下面的例子中?Listprocess(Collectionnodes){Listnodes2=newArrayList(nodes);...}作为另一个示例,请考虑以下变量是int的情况从String解析参数:publicvoidprocessUser(finalStringuserId){finalintuserId2=Integer.parseInt(userId);... 最佳答案

java - 创建一个包含相同值/对象的 n 个副本的数组?

我想创建一个大小为n的数组,数组中的每个索引都具有相同的值。在Java中执行此操作的最佳方法是什么?例如,如果n为5且值为boolean值false,则数组应为:=[false,false,false,false,false] 最佳答案 你可以试试:boolean[]array=newboolean[5];Arrays.fill(array,false);手动数组填充的第二种方法:boolean[]array=newboolean[]{false,false,false,false,false};