ios - 如何在 iOS6 中的 Core Data 中保存和检索两个数组

标签 ios core-data nsarray

我有两个数组

  1. retrievedNamesMutableArray
  2. retrievedImagesArray

我将其保存在核心数据中。虽然保存操作成功,但当我获取数据时,它似乎获取名称或图像,但不能同时获取两者。我假设我可以在 Core Data 中存储 NSDictionary,但似乎无法找到一种方法来做到这一点。

这就是我正在做的保存到核心数据的事情。

  -(void)saveToPhoneDatabase
{
   AddressBookAppDelegate *appDelegate =[[UIApplication sharedApplication]delegate];
   NSManagedObjectContext *context = [appDelegate managedObjectContext];
   NSManagedObject *newContact;

  /* I assume this can be done but can't figure out proper process.
   NSMutableDictionary *dictionary = [[NSMutableDictionary alloc]init];
  [dictionary setObject:self.retrievedNamesMutableArray forKey:@"NamesArray"];
  [dictionary setObject:self.retrievedImagesArray forKey:@"ImagesArray"];
  */

   for (NSString *object in self.retrievedNamesMutableArray)
   {
    newContact = [NSEntityDescription insertNewObjectForEntityForName:@"AddressBook" inManagedObjectContext:context];
    [newContact setValue:@"GroupOne" forKey:@"groups"];
    [newContact setValue:object forKey:@"firstName"];

   }

   for (UIImage *img in self.retrievedImagesArray)
   {
     newContact = [NSEntityDescription insertNewObjectForEntityForName:@"AddressBook" inManagedObjectContext:context];
     [newContact setValue:img forKey:@"photo"];
     NSLog(@"Saved the photos of Array");
   }

  [context save:nil];
}

这就是我获取数据的方式。

-(void)fetchFromPhoneDatabase
{
   AddressBookAppDelegate *appDelegate =[[UIApplication sharedApplication]delegate];
   NSManagedObjectContext *context = [appDelegate managedObjectContext];
   NSEntityDescription *entityDesc = [NSEntityDescription entityForName:@"AddressBook" inManagedObjectContext:context];
   NSFetchRequest *request = [[NSFetchRequest alloc] init];
   [request setEntity:entityDesc];
   NSError *error;
   self.arrayForTable = [context executeFetchRequest:request error:&error];

   NSLog(@"contents from core data = %@",self.arrayForTable);

  [self.tableView reloadData];

 }

最佳答案

您的第一个循环创建包含名称但不包含图像的对象,第二个循环创建包含图像但不包含名称的不同对象。

假设(根据您之前的问题)两个数组具有相同的大小,您应该 为每个名称/图像仅创建一个对象:

for (NSUInteger i = 0; i < [self.reterivedNamesMutableArray count]; i++) {
    NSString *object = self.reterivedNamesMutableArray[i];
    UIImage *img = self.reterivedImagesArray[i];

    newContact = [NSEntityDescription insertNewObjectForEntityForName:@"AddressBook" inManagedObjectContext:context];
    [newContact setValue:@"GroupOne" forKey:@"groups"];
    [newContact setValue:object forKey:@"firstName"];
    [newContact setValue:img forKey:@"photo"];
}

关于ios - 如何在 iOS6 中的 Core Data 中保存和检索两个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18574858/

相关文章:

iphone - 从 iOS 应用程序更新数据库

ios - 如何将 UITableView 的顶部粘贴到 UISearchBar 的底部?

ios - 如何使用iPhone麦克风输入进行开关以计数轮转?

iphone - AFIncrementalStore 处理具有关系的非休息响应

ios - iPad 上的核心数据获取速度非常慢

ios - 从空字符串解析时如何使NSURL变量为零?

ios - 如何在核心数据发生变化时预览数据库?

ios - 如何根据 Swift 中元素的 id 从结构数组中删除结构元素?

ios - 如何在 iOS 中从 sqlite 数据库检索和存储 NSArray

ios - 如何提取JSON数组?