问题标签 [nsmutableset]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 如何在 Swift 中将 NSSet 转换为 NSMutableSet
我在我的应用程序中使用 Core Data,并且正在处理两个实体之间的多对多关系。我的目标是让用户通过使用 tableview 并让用户选择单元格来选择一个实体中的哪个实体将与另一个实体相关。
创建实体的类时,“列表”设置为 NSSet 类型,这是有道理的,因为不需要对其进行排序,而且我不希望其中的任何其他实体超过一个。
当我想将项目添加到 NSSet 时,我的问题就出现了,据我所知,如果不使用 NSMutableSet,我就无法做到这一点。然后我获得addObject
和removeObject
。除了我初始化 NSMutableSet 以拥有“列表”NSSet 当前拥有的所有内容的部分之外,我可以让一切正常工作。我尝试过的一切要么告诉我它总是会失败并且不会构建,要么最终会意外返回 nil 并出现错误。
那么有没有办法正确更改 NSSet 的内容,或者至少将 NSSet 转换为 NSMutableSet,然后当我完成后,将该 NSMutableSet 转换回 NSSet?
如有必要,我可以添加一些代码,但我认为我解释得很好。让我知道,我会添加你需要的任何细节。
先感谢您。
objective-c - *[NSMutableSet addObject: X]* 添加对象 X,即使 *[Y isEqual:X]* 为已经在 Set 中的对象 Y 返回 TRUE
我有一个名为 Objective-C 的类FactorHelper
,其定义如下。它有一个称为因子的属性,它是 的NSMutableArray
一个NSNumbers
。我isEqual:
在这个类中有一个自定义方法,如果两个FactorHelper
对象中的因子属性具有相同的数字(即使数字的顺序不同),它返回 true。
我试图通过创建两个FactorHelper
对象来进行测试,一个是 10,5,2,另一个是 10,2,5。然后我创建了一个NSMutableSet
,添加了 firstObject,然后添加了第二个对象。我期待第二个对象不会被添加,但我看到它被添加了。当我单步执行代码时,我发现isEqual
addObject 正在调用它并返回TRUE
. 我究竟做错了什么?
更新
更改[NSMutableSet new]
to[NSMutableSet alloc] init]
使事情按预期工作。
此外,更改所有 TRUE、FALSE 为 isEqual 为 YES、NO 使其行为正确(即使我将其保留为[NSMutableSet new]
)。
我不知道发生了什么。有人可以阐明一下吗?
类定义
单元测试代码
ios - 将 NSMutableSet 和 NSMutableOrderedSet 桥接在一起的协议
在Swift 3中,我希望能够创建一个协议,允许我添加元素并通过 using 进行迭代for element in
。该协议应该同时适用于NSMutableSet
和NSMutableOrderedSet
(因为它们不是从同一个类继承的)。
我知道有充分的理由为什么NSMutableSet
不NSMutableOrderedSet
从同一个类继承,这里和这里都有解释。
但我想创建一个协议,它只使用NSMutableSet
(and NSMutableOrderedSet
) 中所有方法的一小部分。
我已经add
开始工作了,像这样:
但是,我真的很想能够通过使用来遍历元素:
我试图使protocol MutableSet
符合Sequence
协议,像这样,但它不起作用:
是否可以使我的协议符合Sequence
?我该怎么做?我尝试了typealias
和等associatedtype
的各种组合。我也尝试了这个答案,它对我不起作用。Element
Iterator
编辑 2:在编辑 1 中回答我自己的问题
我开始var count: Int { get }
使用这个解决方案,但不确定它是否是最好的......如果不必在 and 的扩展中实现 也很好,var elements: [Any] { get }
但我想这是不可避免的吗?NSMutableSet
NSMutableOrderedSet
编辑1:跟进问题
使用@rob-napier 的优秀答案和type erasure
技术我已经扩展了protocol MutableSet
具有count
和能力的能力,但是我只能使用丑陋的(named )subscript
来做到这一点,而不是. 这就是我正在使用的:func
getCount
var
我怎样才能让它在协议中使用,var count: Int { get }
而var elements: [Any]
不是在函数中使用?
objective-c - 将 NSMutableSet 转换为 NSSet
有没有办法将 NSMutableSet 转换为 NSSet?我尝试了几种方法:移动到 NSArray 和 setWithArray;用 NSMutableSet 的内容实例化一个 NSSet。程序编译,但我得到一个运行时错误。
ios - NSMutableSet 中自定义对象的相等性
我在向我自己的对象之一添加自定义相等检查时遇到了一些困难。
我有一个自定义Message
对象,它有一个独特的messageID
属性,它是一个NSString
,以及关于消息的其他信息。
对象存储在 中NSMutableSet
,因此集合中需要唯一性,但我需要它们基于 而messageID
不是默认值是唯一的。
为此,我添加了以下代码。
但是,当我开始将对象的实例添加Message
到集合中时,应用程序(有时,并非总是)在以下行之一崩溃:
或者
基本上每当它尝试访问该messageID
属性时。
我得到的错误是EXC_BAD_ACCESS
.
任何指向正确方向的指针将不胜感激!
ios - How to remove applied filter on a NSMutableSet
I have two entities Student and Subjects. Student can have multiple subjects. I am getting NSMutableSet object from Student (NSManagedObject)
Now I want to check if a subject is already belongs to that student. For this I am applying filter on NSMutableSet like this
Now I am checking if count is > 0 then do some action else want to assign the subject to the student
The problem is It is always inserting new records instead of saving existing records.
swift - Swift 3.0 中 NSMutableSet 的 componentsByString
我有标签和 NSMutable 集。
我想将我的设定值分配给 label.text。
mutSet.allObjects.componetsJoinedByString("\n") 抛出编译时错误,我尝试过加入,它也抛出编译时错误。
请在 Swift 中为我提供替代方式
objective-c - 如何在Objective C中为多个集合执行联合集
我有一组NSSet
实例,如下面的代码中所述。
NSSet
通过使用[NSSet setWithArray:]
从数组创建集合的方法,在 N 个实例中定义了这所有 N 个数组。所有 N 个集合实例都存储在一个数组 X 中。现在,我需要对所有 N 个集合执行联合集合操作。我怎么能做到这一点?
swift - 将 NSMutableSet 存储到 NSUserDefaults
我想在 NSUserDefaults 中存储一个 Swift Set。
鉴于我可以使用以下方法从 UserDefaults 读取 NSMutableSet 值:
...似乎我也应该能够编写 NSMutableSet 。
我尝试将我的 Set 转换为 NSMutableSet,但是当我尝试将其保存在 UserDefaults 中时,它说:
[用户默认值] 尝试将非属性列表对象 {( foo )} 设置为键 KEYNAME 的 NSUserDefaults/CFPreferences 值
ios - 从 NSObject 类创建一个数组
我有一个包含 3 个属性的 NSObject 类调用 Details。
这个类的执行是
在另一个类调用请求类中,我想创建一个数组来保存详细信息类的属性(图像、数字、详细信息)
但我不能将这个类的属性作为一个数组......我在这里错过了什么?任何帮助都是完美的!谢谢