2013-11-07 3 views
2

Я пытаюсь прочитать объект coredata в NSMutableArray, но я продолжаю возвращать странные много данных. например, когда я вернусь к NSDictionary значений выглядит как этотКак читать NSArray из объекта coredata

data: { 
    companyName = "WPremium"; 
    desc = "Test"; 
    guid = "Otq12342"; 
    install =  (
     "0x1e59e910 <x-coredata://BAF7B1AD-F357-455A-B9D7-1288F7D1F652/Install/p851>", 
     "0x1e59e8e0 <x-coredata://BAF7B1AD-F357-455A-B9D7-1288F7D1F652/Install/p848>", 
     "0x1e59e830 <x-coredata://BAF7B1AD-F357-455A-B9D7-1288F7D1F652/Install/p837>", 
     "0x1e59e930 <x-coredata://BAF7B1AD-F357-455A-B9D7-1288F7D1F652/Install/p853>", 
     "0x1e59e850 <x-coredata://BAF7B1AD-F357-455A-B9D7-1288F7D1F652/Install/p839>", 
     "0x1e59e890 <x-coredata://BAF7B1AD-F357-455A-B9D7-1288F7D1F652/Install/p843>", 
     "0x1e59e8b0 <x-coredata://BAF7B1AD-F357-455A-B9D7-1288F7D1F652/Install/p845>", 
     "0x1e59e7c0 <x-coredata://BAF7B1AD-F357-455A-B9D7-1288F7D1F652/Install/p830>", 
     "0x1e5957e0 <x-coredata://BAF7B1AD-F357-455A-B9D7-1288F7D1F652/Install/p829>", 
     "0x1e59e810 <x-coredata://BAF7B1AD-F357-455A-B9D7-1288F7D1F652/Install/p835>", 
     "(...and 16 more...)" 
    ); 

Я хотел бы знать, как поставить установку объект CoreData словаря в NSArray, так что я могу сортировать его. любая помощь должна быть оценена.

UPDATE вот как я называю свой объект coredata.

- (NSMutableArray *)readSelectedInstall:(NSString *)projIDString { 
    NSManagedObjectContext *context = [self managedObjectContext]; 


    if (context == nil) { 
     NSLog(@"Nil"); 
    } 
    else { 


     NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
     NSEntityDescription *entity = [NSEntityDescription entityForName:@"InstallProject" inManagedObjectContext:context]; 
     [fetchRequest setEntity:entity]; 

     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"projID==%@",projIDString]; 
     [fetchRequest setPredicate:predicate]; 

     NSError *error; 

     NSMutableArray *installProjectDictionaryArray = [[NSMutableArray alloc] init]; 


     NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error]; 
     for (InstallProject *installProj in fetchedObjects) { 

      NSMutableDictionary *tempInstallProjectDictionaryArray = [[ NSMutableDictionary alloc] init]; 

      [tempInstallProjectDictionaryArray setObject:installProj.companyName forKey:@"CompanyName"]; 
      [tempInstallProjectDictionaryArray setObject:installProj.projNo forKey:@"ProjNo"]; 
      [tempInstallProjectDictionaryArray setObject:installProj.desc forKey:@"Desc"]; 
      [tempInstallProjectDictionaryArray setObject:installProj.guid forKey:@"GUID"]; 
      [tempInstallProjectDictionaryArray setObject:installProj.projID forKey:@"ProjID"]; 
      [tempInstallProjectDictionaryArray setObject:installProj.install forKey:@"install"]; 

      [installProjectDictionaryArray addObject:tempInstallProjectDictionaryArray]; 
     } 

     return installProjectDictionaryArray; 
    } 
    return nil; 
} 

затем возвращающегося NSMutableArray Я делаю это

NSMutableArray *getarray = [self readSelectedInstall:projIDString]; 

    NSMutableDictionary *installsDictionary = [getarray objectAtIndex:0]; 

    NSMutableArray *tempInstalls = [installsDictionary objectForKey:@"install"]; 
    NSLog(@"%@", tempInstalls); 

    NSArray *tempSortedItemsArray = [tempInstalls sortedArrayUsingDescriptors: 
            @[[NSSortDescriptor 
             sortDescriptorWithKey:@"dp" ascending:YES], 
            [NSSortDescriptor 
             sortDescriptorWithKey:@"dc 

" ascending:YES]]]; 

    tempInstalls = [tempSortedItemsArray mutableCopy]; 
    tempSortedItemsArray = nil; 




    NSLog(@"%@", tempInstalls); 

, но на этой последней строке кода, где у меня есть странный выход ..

ответ

1

Все, что вам нужно сделать, это принести основные данные NSManagedObject из Core Data, установка будет возвращена как NSSet, по внешнему виду, это NSSet NSManagedObjects.

Как только у вас есть объект, вы получаете доступ к свойству «install» и сортируете, как хотите.

// Get the Core Data Object (Uses Magical Record) 
MyObject *object = [MyObject MR_findFirstWithPredicate:[NSPredicate objectPredicate:self.users_id]]; 
// Sort the object set into an array 
NSArray *installs = [object.install sortedArrayUsingDescriptors:@[ [NSSortDescriptor sortDescriptorWithKey:k_timestamp ascending:YES] ]]; 
+0

Я обновил свой вопрос, как получить объект .. Я думал, что это может помочь вам решить вопрос. – HurkNburkS

+0

Я только что прочитал на другом квесте, вы должны использовать NSSet .. Im смотря это сейчас. – HurkNburkS

+0

@HurkNburkS Я думаю, что вы делаете правильно. Не полагайтесь полностью на NSLog, что вы надеетесь сделать с объектом? – sbarow

Смежные вопросы