只有当数组已经不包含该对象时,我才想将对象添加到数组。如何与NSArray中的containsObject方法相反? 最佳答案 使用NSMutableOrderedSet,谁的addObject:方法完全符合您的要求:Appendsagivenobjecttothemutableorderedset,ifitisnotalreadyamember. 关于objective-c-仅当对象不在数组中时才将对象添加到数组中,我们在StackOverflow上找到一个类似的问题:
我正在尝试通过核心数据关系将这个系列实例添加到一个国家/地区。唯一的问题是我的NSOrderedSet变得非常大,并且这种添加方法变得效率低下,因为我必须将已经存在的整个NSOrderedSet(变大)加载到内存中。将其复制到可编辑的副本中,然后添加新实例。比为该国家/地区设置大型NSOrderedSet新的OrderdSet并保存它。(顺便说一句,这是我在互联网上找到的一个简单的解决方案)是否可以在不加载与该特定国家相关联的整个NSOrderdSet的情况下执行此操作?那么只添加新实例而不加载完整列表?对于我含糊的解释,我深表歉意。我是Core-Data概念的新手。fordatain
标题是怎么说的-我想确定对象在最后一个位置,但我找不到NSOrderedSet的任何函数。是否可以简单地设置为data[data.count]? 最佳答案 NSOrderedSet是不可变的。你需要NSMutableOrderedSet,特别是,您需要使用addObject(_:),例如:data.addObject(myData)NSOrderedSet和NSMutableOrderedSet都是Foundation框架的一部分,不符合CollectionType协议(protocol),因此您不能像问题中那样使用[]运算符。
我有这个for循环,p是一个NSManagedObject,fathers是一个对多关系,所以我需要将NSMutableOrderedSet转换为[Family]但它不起作用,为什么?forfinp.fathersas[Family]{} 最佳答案 您可以通过array属性获取该集合的数组表示-然后您可以将其向下转换为正确的类型并分配给变量:letfamilies=p.fathers.arrayas[Family]当然你也可以直接在循环中使用它:forfinp.fathers.arrayas[Family]{....}更新现在需要使
我有这个for循环,p是一个NSManagedObject,fathers是一个对多关系,所以我需要将NSMutableOrderedSet转换为[Family]但它不起作用,为什么?forfinp.fathersas[Family]{} 最佳答案 您可以通过array属性获取该集合的数组表示-然后您可以将其向下转换为正确的类型并分配给变量:letfamilies=p.fathers.arrayas[Family]当然你也可以直接在循环中使用它:forfinp.fathers.arrayas[Family]{....}更新现在需要使
当然,有序集合是集合的更具体的情况,那么为什么NSOrderedSet继承自NSObject而不是NSSet? 最佳答案 我通过了NSSet的接口(interface),你是对的,有序集合似乎满足Liskovsubstitutionprinciple因此可以从NSSet继承。有一个小方法可以解决这个问题:mutableCopy。mutableCopy的返回值必须是NSMutableSet,但NSMutableOrderedSet应该继承自NSOrderedSet。你不能两者兼得。让我用一些代码来解释一下。首先,我们看一下NSSet和
当然,有序集合是集合的更具体的情况,那么为什么NSOrderedSet继承自NSObject而不是NSSet? 最佳答案 我通过了NSSet的接口(interface),你是对的,有序集合似乎满足Liskovsubstitutionprinciple因此可以从NSSet继承。有一个小方法可以解决这个问题:mutableCopy。mutableCopy的返回值必须是NSMutableSet,但NSMutableOrderedSet应该继承自NSOrderedSet。你不能两者兼得。让我用一些代码来解释一下。首先,我们看一下NSSet和