내 핵심 데이터 엔티티에는 유효성이라는 정수 32 유형의 속성이 있습니다.핵심 데이터의 정수 속성이 다르게 표시됩니다.
이 방법을 사용하여 이전에 만들어진 두 개의 개체가 :
- (void) AddMandatoryItems
{
NSManagedObjectContext *context = [self managedObjectContext];
NSManagedObject *newMonitorItem = [NSEntityDescription
insertNewObjectForEntityForName:@"MonitorItem"
inManagedObjectContext:context];
//
// Other codes here
//
[newMonitorItem setValue:[NSNumber numberWithInt:35]
forKey:@"validity"];
[self.monitorItemArray addObject:newMonitorItem];
NSError *error = nil;
if (![context save:&error])
{
NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
}
//
// other codes here
//
[newMonitorItem setValue:[NSNumber numberWithInt:90]
forKey:@"validity"];
[self.monitorItemArray addObject:newMonitorItem];
if (![context save:&error])
{
NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
}
// Return the number of rows in the section.
}
유효 값은 각각 제 1 및 제 2 객체 (35) (90)이다.
두 값
이렇게로드 :- (void)viewDidLoad
{
//
// Other codes here
//
NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"MonitorItem"];
self.monitorItemArray = [[managedObjectContext
executeFetchRequest:fetchRequest
error:nil] mutableCopy];
NSLog(@"viewDidLoad.monitorItemArray[1].validity: %d", (int)[self.monitorItemArray[1] valueForKey:@"validity"]);
}
NSLog의 결과는 다음과 같다 :
2014년 5월 14일 14 : 55 : 15.939 SGRecencyMonitor [3086 : 70B]의 viewDidLoad을 .monitorItemArray [1] .validity : 나타내는 값으로 1,442
90 대신 1442이어야하지만 복귀 올바른 결과 아래 cellForRowAtIndexPath 방법에 체크 :
,174,5152014년 5월 14일 14 : 55 : 15.948 SGRecencyMonitor [3086 : 70B] ItemViewController에있는 tableview의 cellForRowAtIndexPath 유효 기간 : 90
누군가가 나에게 설명해 주시겠습니까
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
NSManagedObject *monitorItem = [self.monitorItemArray objectAtIndex:indexPath.row];
//
// code to display each row here
//
NSLog(@"ItemViewController tableview cellForRowAtIndexPath Validity: %@", [monitorItem valueForKey:@"validity"]);
return cell;
}
결과는 다음과 같다 왜 [self.monitorItemArray [1] valueForKey : @ "validity"]를 사용하여 올바른 결과를 얻을 수 없는지이 메서드를 사용하여 self.monitorItemArray 객체를 다른 뷰에 전달합니다. 그것을 통해 올바른 값을 검색 할 수 없습니다. 아래는 segue 방법입니다
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"UpdateView"])
{
NSManagedObject *selectedItem = [self.monitorItemArray objectAtIndex:[[self.tableView indexPathForSelectedRow] row]];
ItemUpdateViewController *destViewController = segue.destinationViewController;
destViewController.ItemReceived = selectedItem;
}
}
내가 잘못 했습니까? 당신
'int'를 원한다면'[(NSNumber *) [self.monitorItemArray [1] valueForKey : @ "validity"] intValue]'이어야합니다. 귀하의 수표에 그것은'[(NSNumber *) [self.monitorItemArray [1] valueForKey : @ "타당성"] stringValue]'여야합니다. 그러나 NSNumber가 암시 적으로 NSString으로 NSString을 던져 넣습니다. – kaman