簡體   English   中英

獲取核心數據關系

[英]fetch coredata relationship

我想知道如何從我的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;
}

因此,請重申一下,我想知道A,我的寫方法看起來還好嗎? B,如何從核心數據中獲取/讀取關系對象。

任何幫助將不勝感激。

Core Data中的關系不是對象,它是一個屬性,恰好對應於模型中的另一個對象,而不僅僅是一個死胡同。 就我所知,您已經到了檢查您的關系是否正常的大部分方法-您需要做的是在項目列表中再添加一行

[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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM