2013-09-29 192 views
0

我想知道如何從我的coredata關係船取物品。我想這應該是一個字典或數組或東西被退回,這樣你可以有你的一對多的事情。取coredata關係

我完全迷失了方向,在這我知道如何讀/寫單對象,但這種關係的東西升技混亂。

我想我已經成功地寫了一個關係到coredata,但是現在我想能夠閱讀它,看看我是否正確..我已經開始爲此編寫方法,但不知道該怎麼做獲取所有信息。

這是代碼我迄今..對讀取和寫入

- (void)writeFin:(NSArray *)recivedProjectData ItemsData:(NSArray *)itemsData { 
    // WRITE TO CORE DATA 
    NSManagedObjectContext *context = [self managedObjectContext]; 


    for (NSDictionary *dict in recivedProjectData) { 
     project = [NSEntityDescription insertNewObjectForEntityForName:@"Project" inManagedObjectContext:context]; 


     project.proNumber = [dict valueForKey:@"ProNumber"]; 
     project.projectDescription = [dict valueForKey:@"Description"]; 
//  project.items = [dict valueForKey:@""]; // this is the relationship for project 

    } 

    for (NSDictionary *dict in itemsData) { 
     items = [NSEntityDescription insertNewObjectForEntityForName:@"Items" inManagedObjectContext:context]; 


     items.Number = [dict valueForKey:@"Number"]; 
     items.Description = [dict valueForKey:@"Description"]; 
     items.comment = [dict valueForKey:@"Comment"]; 
     items.project = project; // this is the relationship for items 

     [project addItemsObject:items]; 
    } 


    NSError *error = nil; 

    if (![__managedObjectContext save:&error]) { 
     NSLog(@"There was an error! %@", error); 
    } 
    else { 
     NSLog(@"created"); 
    } 
} 


- (NSMutableArray *)readFin { 
    NSManagedObjectContext *context = [self managedObjectContext]; 


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

    NSError *error; 

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


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

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

     [tempProjectDictionaryArray setObject:project.proNumber forKey:@"ProNumber"]; 
     [tempProjectDictionaryArray setObject:project.description forKey:@"Description"]; 
     [tempProjectDictionaryArray setObject:project.projectID forKey:@"ProjectID"]; 

     [projectDictionaryArray addObject:tempProjectDictionaryArray]; 
    } 
    return projectDictionaryArray; 
} 

所以才Ø重申,我想知道,是我寫的方法看行不行? B,你怎麼獲取/讀取核心數據的關係的對象。

任何幫助將不勝感激。

回答

1

在覈心數據的關係是不是一個對象,其恰好對應於另一個對象模型,而不是僅僅是一個死衚衕的屬性。你已經大部分的方式存在,只要檢查你的關係是否正常,只要我能看到 - 你需要做的是增加一個行你projectList

[tempProjectDictionaryArray setObject: project.items forKey:@"items"]; 

的對象,您將添加將是一個NSSet。然後你可以檢查一下事情是這樣的,當你完成設置之後,這樣的循環

NSSet itemsForProject = projectDictionaryArray[someIndex][@"items"] 
for (Item* currItem in [itemsForProject allObjects]) { 

    //access some property of the current item to make sure you have the right ones -- \ 
    description for example 
    NSLog(@"%@", item.description); 
} 
+0

好吧..檢查..生病讓你知道它是怎麼回事,我只是看着它和思考,也許我需要一個循環讀取這一關,但既然你提到了一個N​​SSet中,這使得很多MROE感... – HurkNburkS

+0

工作perfecly ..只是一對夫婦的更新在你的代碼。 – HurkNburkS