gpt4 book ai didi

IOS/Objective-C/核心数据 : Find index of an NSNumber in an array of NSManaged Objects

转载 作者:行者123 更新时间:2023-11-29 00:14:32 26 4
gpt4 key购买 nike

我从 nsmanaged 对象的核心数据中执行提取。托管对象的属性之一是 NSNumber,对应于对象的 ID(不是 Apple 的 objectid,我自己的顺序 NSNumber id 方案)。对于具有 id# 的给定对象,我想获取该对象在数组中的索引。但是,我无法找到获取 id#s 列表的方法,因为 valueforkey 不适用于 nsnumbers,objectforkey 会抛出 nsmutablearray 的错误。谁能建议如何做到这一点?

这是我的非工作代码。问题是我无法从获取的对象中获取有效的 ID 列表。

//FETCH ITEMS
- (id) getItems{

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Items"];
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"lasttouched" ascending:NO];
[fetchRequest setSortDescriptors:@[sort]];
NSError *error = nil;
self.managedObjectContext = [IDModel sharedInstance].managedObjectContext;

NSArray *results = [self.managedObjectContext executeFetchRequest:fetchRequest
NSMutableArray *mutableresults = [results mutableCopy];
[mutableresults removeObjectIdenticalTo:[NSNull null]];
NSArray*someids =[[mutableresults valueForKey:@"myid"] mutableCopy];
//THIS IS EMPTY WHEN LOGGED
_someids = someids;//save to ivar
return mutableresults; //an array of activity objects with all their properties
}

// In method to get index of the object

NSInteger myIndex=[_someids indexOfObject:@33];
NSLog(@"anIndex%ld",(long)anIndex);

最佳答案

您需要将对象重新映射到一个新数组中。对于直截了当的事情,例如:

NSMutableArray *arrayOfIdentifiers = [[NSMutableArray alloc] init];
for(WhateverMyManagedObjectIs *item in results) { if(item.myid) [arrayOfIdentifiers addObject:item.myid]; }

这将导致 id 数组仅作为 NSNumber 对象。由于 NSNumber 是一个对象,因此 indexOfObject 可能不起作用。原因是它将比较指针而不是值。因此,您需要使用 compare 方法,例如:

NSInteger index = -1;
for(NSInteger i=0; i<_someids.count; i++) {
if([_someids[i] compare:@33] == NSOrderedSame) {
index = i;
break; // Break after first one is found
}
}

所以如果你跳过你的对象映射并简单地在同一个对象数组上比较它,最后它几乎是一样的:

    NSInteger index = -1;
for(NSInteger i=0; i<results.count; i++) {
if([[results[i] myid] compare:@33] == NSOrderedSame) {
index = i;
break; // Break after first one is found
}
}

关于IOS/Objective-C/核心数据 : Find index of an NSNumber in an array of NSManaged Objects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45592948/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com