2012-05-16 77 views
1

我是iOS新手。任何人都可以告訴我如何將我的BO映射到核心數據,以便我可以在我的項目中重新使用映射。這裏是我的代碼用iOS中的核心數據映射Business Objects

- (void) saveData 
{  
    CoredataAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 

    NSManagedObjectContext *context = [appDelegate managedObjectContext]; 

    NSManagedObject *newContact; 

    newContact = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:context]; 

    [newContact setValue:firstName.text forKey:@"firstName"]; 
    [newContact setValue:lastName.text forKey:@"lastName"]; 
    [newContact setValue:driverLicenceno.text forKey:@"driverLicenceNumber"]; 
    [newContact setValue:state.text forKey:@"state"]; 
    [newContact setValue:phoneNO.text forKey:@"phoneNumber"]; 
    [newContact setValue:injuryStatus.text forKey:@"injuryStatus"]; 
    [newContact setValue:emailAddress.text forKey:@"emailAddress"]; 

    NSLog(@"fName%@",firstName.text); 
    firstName.text = @""; 
    NSLog(@"fName%@",firstName.text); 
    lastName.text = @""; 
    driverLicenceno.text = @""; 
    state.text = @""; 
    phoneNO.text = @""; 
    injuryStatus.text = @""; 
    emailAddress.text = @""; 

    NSError *error; 
    [context save:&error]; 
    status.text = @"Person saved"; 
} 

有沒有我的BO映射與除此之外的其他任何coredata方式othere?

+0

你是什麼意思在覈心數據映射BO?你有沒有數據模型?正如我從您的代碼中看到的那樣,您正在使用Person實體。那麼,你的目標是什麼?謝謝。 –

+0

我的目標是將我的BO映射到coredata,因此它會通過映射模型對象自動填充我的personInfoBO,但無法創建映射模型。這裏是我正在關注的鏈接http://developer.apple.com/library/mac/ #documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmMappingOverview.html –

+0

*映射模型*是指數據模型嗎? –

回答

2

Tahir首先你必須創建你已經創建的Coredata數據庫。接下來在coredata模型的實體面板中選擇表格。右鍵單擊項目歷史樹中的模型。選擇新文件,選擇coredata和NSManagedObjectSubclass並保存它。它爲coredata表創建模型類,您可以在您的方法中使用它。 enter image description here

此圖片顯示的數據庫和表選擇點擊右鍵並選擇NSManagedObjectSubClass

enter image description here

此圖片顯示第一coredata比NSManagedObjectSubClass並在此之後的選擇,當你點擊旁邊它告訴你PANAL給名稱並將其保存在您的項目中。 我希望這會幫助你謝謝你!

+0

謝謝你爲我工作 –

1

只是告訴我如何應用SQL查詢,如更新,刪除,查找第二 最大,連接,核心數據查看等

由於核心數據涵蓋了很多的東西,我可以提供一些提示。

首先,處理核心數據意味着處理被稱爲NSManagedObject的一種暫存器「存在」的被管理對象。將其視爲一種容器圖,其中包含基於您創建的數據模型從文件中檢索的對象(例如,sql文件)。在不保存上下文之前,更改駐留在內存中,而不是物理存儲。

[moc save:&error]; 

隨着NSManagedObject,您可以創建,更新,查詢或刪除對象。當然,還有其他的東西。

如果您需要插入新的託管對象(在數據模型中聲明),則可以使用insertNewObjectForEntityForName:inManagedObjectContext:

如果您需要執行查詢,您需要看看NSFetchRequest類。設置NSFetchRequest等同於SQL語言中的SELECT語句。

這裏一個簡單的例子:

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
[request setEntity:[NSEntityDescription entityForName:@"Person" inManagedObjectContext:moc]]; 

NSError *error = nil; 
NSArray *results = [moc executeFetchRequest:request error:&error]; 

// error handling code 

數組results包含所有包含源碼文件中的管理對象(人)。如果你想抓住一個特定的對象(或更多的對象),你需要使用該請求的謂詞。例如:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"firstName == %@", @"John"]; 
[request setPredicate:predicate]; 

在這種情況下results包含的對象(人),其中屬性是等於John。設置謂詞等於將WHERE子句放入SQL語句中。

如果您想要設置連接,視圖等,您需要在實體之間執行正確的NSPredicates(基於關係和屬性),並讓Core Data爲您執行行內容。

如果您需要刪除一個對象,你需要做的:

[moc deleteObject:managedObjectToDelete]; 

如果需要更新管理對象,你必須創建一個提取請求和檢索對象()你正在尋找因爲(例如,你可以爲每個對象提供一個特定的id並用你想要的id設置一個謂詞)。如果提取請求檢索某些對象,則可以更新它們。

這些是指導您使用核心數據的簡單技巧。我建議你閱讀Core Data Programming Guide。在那裏你可以找到很多東西。如果你願意,你可以從使用核心數據的好教程開始看看www.raywenderlich.com

如果你想要別的東西讓我知道。

希望它有幫助。