我使用此方法将数据传递给视图:
nextViewController = [[AfricanSwallowViewController alloc] initWithNibName:@"AfricanSwallowView" bundle:nil];
((InstructionsViewController *)nextViewController).byTheHusk = byTheHusk;
我试图迭代byTheHusk传递给的视图上的值。
我尝试了几个版本的NSLog(@"%@", byTheHusk.name);
并使用objectAtIndexPath
等没有运气
有没有办法访问while
或for
循环样式结构中的对象条目属性?
我能得到的最接近的是:
NSManagedObject *managedObject = [self.fetchedResultsController objectAtIndexPath:0];
NSLog(@"%@",[[managedObject valueForKey:@"name"] description]);
导致:
ByTheHusk[7880:207] (null)
这意味着有207个条目。是对的吗? ByTheHusk正确通过了吗?
我对这一切都是一个菜鸟,所以感谢任何帮助!!!
博
答案 0 :(得分:0)
我认为您将NSManagedObjectContext对象与NSManagedObject对象混淆。
此代码段:
nextViewController = [[AfricanSwallowViewController alloc] initWithNibName:@"AfricanSwallowView" bundle:nil];
((InstructionsViewController *)nextViewController).byTheHusk = byTheHusk;
...看起来像是尝试将NSManagedObjectContext从一个视图控制器移交给另一个视图控制器。然而,尝试演员可能会把事情搞砸。应该看起来像这样:
InstructionsViewController *nextViewController = [[AfricanSwallowViewController alloc] initWithNibName:@"AfricanSwallowView" bundle:nil];
nextViewController.byTheHusk = self.byTheHusk; //assuming that byTheHusk is a property of the current view controller.
我猜测InstructionsViewController
是一个使用NSFetchedResultsController的tableview控制器,并配置为从byTheHusk
托管对象上下文中获取。
如果是,那么从此代码获得null
返回:
NSManagedObject *managedObject = [self.fetchedResultsController objectAtIndexPath:0];
NSLog(@"%@",[[managedObject valueForKey:@"name"] description]);
...可能表示fetchedResultsController
在获取时没有找到任何对象。在任何情况下,它都不会记录byTheHusk
对象,而只记录fetch找到的第一个NSManagedObject实例。
ByTheHusk [7880:207](null)
这意味着有207个条目。是对的吗?那个ByTheHusk 正确通过了?
没有。在这种情况下,ByTheHusk
是应用程序/库的名称,而IIRC是对象文件中的行和块偏移量。它们与被记录的对象无关。 (null)
只是意味着语句[[managedObject valueForKey:@"name"] description]
不会返回任何类型的对象。
不确定您的问题是什么,但修复上面的第一位代码会有所帮助。
答案 1 :(得分:0)
我通过一些教育和反复试验以及错误和错误来解决这个问题。
但我明白了!!!!
NSMutableArray* annotations=[[NSMutableArray alloc] init];
// Save our fetched data to an array
[self setEventArray: mutableFetchResults];
[mutableFetchResults release];
[request release];
//NSLog(@"%d",[eventArray count]);
for (int i = 0; i < [eventArray count]; i++) {
//NSLog(@"%@",[[eventArray objectAtIndex:i] name]);
CLLocationCoordinate2D theCoordinate;
double latNum = [[[eventArray objectAtIndex:i] latitude] doubleValue];
theCoordinate.latitude = latNum;
double lonNum = [[[eventArray objectAtIndex:i] longitude] doubleValue];
theCoordinate.longitude = lonNum;
//-------------------------
MyAnnotation* tempAnnotation=[[MyAnnotation alloc] init];
tempAnnotation.coordinate=theCoordinate;
tempAnnotation.title=[NSString stringWithFormat:@"%@",[[eventArray objectAtIndex:i] name]];
tempAnnotation.subtitle=[NSString stringWithFormat:@"%@",[[eventArray objectAtIndex:i] name]];
//-------------------------
[mapView addAnnotation:tempAnnotation];
[annotations addObject:tempAnnotation];
}
把它放在一个数组中然后翻过来......感谢大家的指导!