您当前的位置: 首页 >  swift

Swift中集合(Set)无法删除自身对象的临时解决方法

发布时间:2018-12-15 16:52:50 ,浏览量:0

这是本猫遇到的比较怪异的问题之一:明明在集合中的对象,但却无法直接删除它。由于原项目较为复杂,为了演示目的,本猫对博文示例代码做了简化,但并不影响问题的表述。

背景介绍

App逻辑很简单,对象Node对应着TableView中每一行,你不用知道Node对象到底是啥,你只要知道它是列表每一行后面的那个数据对象:

class Node:Equatable{

	var nodeId:Int
	var parentId:Int
	var depth:Int

	static func ==(lhs:Node,rhs:Node)->Bool{
        	return lhs.nodeId == rhs.nodeId
    	}

	//其它代码忽略之...
}

所有Node都放在Folder对象的nodes属性里,TableView对应一个Folder对象:

class Folder{
	private var nodes:Set= []

	func add(node:Node){
	    	node.parentId = self.nodeId
	        node.depth = isInRoot ? 1 : 2
	        nodes.insert(node)
	}
    
    	func delete(node:Node){
        	node.parentId = -1
        	habitHolder.depth = 0
        	nodes.remove(node)
    	}

	//其它代码忽略之...
}

如上,当删除TableView中的某一行时,就会删除该行对应的Node对象:

<
关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    107766博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.3114s