[英]Object in Array is not recognised as having “methods”
我讓我的應用程序稍作恢復,但是在完全意外刪除它之后,我嘗試從第一個方框創建它。 不幸的是,我改寫的程序有些古怪; 有誰看到或知道錯誤的可能來源? 另外,我的if語句正在起作用。
-(void)loadAnnotations
{
CLLocationCoordinate2D workingCoordinate;
iProspectLiteAppDelegate *appDelegate = (iProspectLiteAppDelegate *)[[UIApplication sharedApplication] delegate];
NSMutableArray *mines =[[NSMutableArray alloc] initWithArray:(NSMutableArray *) appDelegate.mines];
BOOL gold = [[NSUserDefaults standardUserDefaults] boolForKey:@"goldControl"];
BOOL silver = [[NSUserDefaults standardUserDefaults] boolForKey:@"silverControl"];
BOOL copper = [[NSUserDefaults standardUserDefaults] boolForKey:@"copperControl"];
for(id mine in mines)
{
NSLog(@"in the loop");
workingCoordinate.latitude = [[mine latitudeInitial] doubleValue];
workingCoordinate.longitude = [[mine longitudeInitial] doubleValue];
iProspectLiteAnnotation *tempMine = [[iProspectLiteAnnotation alloc] initWithCoordinate:workingCoordinate];
[tempMine setTite:[mine mineName]];
if ([[mine commodity] isEqualToString:@"Gold"] && [gold == YES])
{
[tempMine setAnnotationType:iProspectLiteAnnotationTypeGold];
[mapView addAnnotation:tempMine];
}
if([[mine commodity] isEqualToString:@"Silver"] && [silver == YES])
{
[tempMine setAnnotationType:iProspectLiteAnnotationTypeSilver];
}
if([[mine commodity] isEqualToString:@"Copper"] && [copper == YES])
{
[tempMine setAnnotationType:iProspectLiteAnnotationTypeCopper];
}
}
[mines dealloc];
}
其中workingCoordinate.latitude = [[mine latitudeInitial] doubleValue],以及經度和[mine mineName],它說“找不到'-latitudeInitiallongitudeInitial'方法”或mineName / LongitudeInitial。 同樣,它在所有if語句行都抱怨:before]。 我沒有看到任何錯誤,是嗎?
您正在使用的迭代器為您提供id
類型的對象-在這些對象上調用方法通常會使編譯器感到困惑。 您可以將它們轉換為已知類型嗎?
喜歡for(MineType* mine in mines)
嗎?
和
[tempMine setTite:[mine mineName]];
那是錯字嗎? 我的猜測是您將調用該方法setTitle
。
我認為將for循環中我的對象的對象類型更改為具有latitudeInitial,longitudeInitial,mineName屬性/方法的任何自定義類都可以解決此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.