0
我從nsmanaged對象的核心數據執行提取操作。託管對象的屬性之一是一個NSNumber,對應於對象的id(不是Apple的objectid,我自己的順序NSNumber id方案)。對於具有ID#的給定對象,我想獲取數組中該對象的索引。但是,我找不到一種方法來獲取id#的列表,因爲valueforkey不適用於nsnumbers,而objectforkey會用nsmutablearray引發錯誤。任何人都可以建議如何做到這一點?IOS/Objective-C/Core數據:在NSManaged對象數組中查找NSNumber的索引
這是我的非工作代碼。問題是我無法從獲取的對象中獲取有效的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);
':
所以在最後,如果你跳過映射你的對象,並簡單地把它同一個對象陣列上進行比較是幾乎相同NSArray * someids = [[mutableresults valueForKey:@「myid」] mutableCopy];對於(項目* anItemFetched在結果中){NSLog(@「ItemId:%@,[anItemFetched valueForKey:@」myid「]}'這是否打印您正在尋找的那個? – Larme
爲什麼要檢查'NSNull'實例?如果仔細編寫插入對象的代碼,則不能發生「NSNull」實例。 – vadian