我正在使用核心數據爲我的應用程序,但我困在此刻的問題。核心數據關係
我的應用程序工作正常與核心數據模型2名的實體
UserDetails
和SiteLocation
,
所以我獲取數據到UserDetails
和NSPredicate
創建了用戶的SiteLocations
「 UserProject「使用fetchController
添加到UITableView
,這工作正常。我列出了所有的項目。
現在我想添加的UserDetails postcode
屬性爲SiteLocation
實體 - 對於屬性sitePostCode
這樣我就可以在地圖上顯示所有Sitelocation
。
如何獲取第二個屬性postcode
到SiteLocation
實體?
@implementation SiteLocation (Create)
+(SiteLocation *)siteLocationWithName:(NSString *)sitename inManagedObjectContext:(NSManagedObjectContext *)context
{
SiteLocation *projectName = nil;
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"SiteLocation"];
request.predicate = [NSPredicate predicateWithFormat:@"siteName = %@",sitename];
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"siteName" ascending:YES];
request.sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSError *error = nil;
NSArray *siteLocations = [context executeFetchRequest:request error:&error];
if (!siteLocations || ([siteLocations count] > 1)) {
// handle error
NSLog(@"site = 0");
} else if (![siteLocations count]) {
projectName = [NSEntityDescription insertNewObjectForEntityForName:@"SiteLocation"
inManagedObjectContext:context];
projectName.siteName = sitename;
//projectName.sitePostCode = sitePostCode;
} else {
projectName = [siteLocations lastObject];
}
NSLog(@"project name = %@", projectName);
return projectName;
}
創建UserDetails
代碼
+(UserDetails*)userWithJsonInfo:(NSDictionary*)jsonInfo inManagedObjectContext:(NSManagedObjectContext *)context;
{
UserDetails *userdetail = nil;
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"UserDetails"];
request.predicate = [NSPredicate predicateWithFormat:@"userName = %@", [jsonInfo objectForKey:Employee_Name]]; // update Employee_Number
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"userName" ascending:YES];
request.sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSError *error = nil;
NSArray *matches = [context executeFetchRequest:request error:&error];
if (!matches || ([matches count] > 1)) {
//error handler
} else if ([matches count] == 0){
userdetail = [NSEntityDescription insertNewObjectForEntityForName:@"UserDetails" inManagedObjectContext:context];
userdetail.userID = [jsonInfo objectForKey:ID];
userdetail.userName = [jsonInfo objectForKey:Employee_Name];
userdetail.userEmail = [jsonInfo objectForKey:Email_Address];
userdetail.userMobile = [jsonInfo objectForKey:Phone_Handheld_No];
userdetail.userPhoto = [jsonInfo objectForKey:PhotoURL];
userdetail.postcode = [jsonInfo objectForKey:Project_Postcode];
userdetail.userProject = [jsonInfo objectForKey:Project_Description];
userdetail.projectUsers = [SiteLocation siteLocationWithName:[jsonInfo objectForKey:Project_Description]inManagedObjectContext:context];
//NSLog(@"user detail = %@", userdetail.userName);
} else {
userdetail = [matches lastObject];
}
return userdetail;
}
你可以發佈代碼而不是截圖嗎?謝謝 –
你能否更好地解釋你的目標?目前尚不清楚。此外,什麼是*位置*實體?它代表* SiteLocation *嗎? –
是的,抱歉SiteLocation,編輯和添加代碼感謝 – HernandoZ