アプリにコアデータを使用していますが、現時点ではこの問題で立ち往生しています。
私のアプリはCoreDataモデル2エンティティで正常に動作しています
UserDetails
とSiteLocation
、
したがって、データをとにフェッチしUserDetails
、ユーザーからNSPredicate
作成するSiteLocations
「UserProject」をUITableView
使用してに追加するfetchController
と、これは正常に機能します。すべてのプロジェクトのリストを取得します。
次に、UserDetailspostcode
属性をSiteLocation
エンティティに追加します-属性の場合、マップ上にsitePostCode
すべてを表示できるようにSitelocation
します。
エンティティに2番目の属性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;
}