首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用CKRecord removeObject从CKReferenceList中删除CKReference

无法使用CKRecord removeObject从CKReferenceList中删除CKReference
EN

Stack Overflow用户
提问于 2016-12-20 07:17:48
回答 1查看 47关注 0票数 1

我有一个员工列表的CKReferenceList,内容可能如下所示

代码语言:javascript
复制
 (
    "<CKReference: 0xa5bc930; 83a97165-2635-4bda-a7eb-fabf5a725bed:(_defaultZone:__defaultOwner__)>",
    "<CKReference: 0xa50a2e0; 9B7F4269-D8BA-4CE9-9BCF-AD2047B73EB5:(_defaultZone:__defaultOwner__)>"
) 

然后,我有另一个指向员工记录的CKReference。它可能看起来像这样

代码语言:javascript
复制
"<CKReference: 0xa5bc330; 83a97165-2635-4bda-a7eb-fabf5a725bed:(_defaultZone:__defaultOwner__)>"

请注意,此特定员工的引用在员工列表中,它们具有相同的引用名称,即“83a97165-2635-4bda-a7eb-fabf5a725bed”。

当我尝试使用下面的代码删除时

代码语言:javascript
复制
 NSMutableArray<CKReference*>* employeeList = [[NSMutableArray alloc]initWithArray:self.employeeList];
    if(employeeList != nil){
        [employeeList removeObject:employeeReference];
    }

这不会从列表中删除引用,即使引用名称相同( contain方法也是如此)。

我认为removeObject使用isEqual: method作为标准,所以当比较两个CKReference时,它们实际上是比较地址,而不是基于字符串名称。

我是否应该重写isEqual实现来提供我自己的实现,以便从CKReference列表中删除给定的CKReference。

或者,有没有其他方法可以解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2016-12-22 15:20:03

您可以调用indexOfObjectPassingTest:并根据需要进行比较:

代码语言:javascript
复制
NSMutableArray <CKReference*>* employeeList = [[NSMutableArray alloc] init];

NSUInteger index = [employeeList indexOfObjectPassingTest:^BOOL(CKReference * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
    return [obj.recordID.recordName isEqualToString:recordNameToRemove];
}];

if (index != NSNotFound) {
    [employeeList removeObjectAtIndex:index];
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41232554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档