2010-02-25 3 views
0

J'ai regardé toutes les questions et réponses précédentes sur cette erreur, mais je ne peux pas comprendre ce que je fais mal. Quelqu'un peut-il aider?avertissement: affectation de type Objective-C distinct

@synthesize myScrollView; 
@synthesize mathsPracticeTextArray; 

-(void)loadText 
{ 
    NSBundle *bundle = [NSBundle mainBundle]; 
    NSString *textFilePath = [bundle pathForResource:@"mathspractice" ofType:@"txt"]; 
    NSString *fileContents = [NSString stringWithContentsOfFile:textFilePath]; 
    mathsPracticeTextArray = fileContents; 

} 

- (void)viewDidLoad { 

    [super viewDidLoad]; 

    myScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; 
    myScrollView.contentSize = CGSizeMake(320, 960); 
    myScrollView.pagingEnabled = FALSE;  
    myScrollView.scrollEnabled = TRUE; 
    myScrollView.backgroundColor = [UIColor whiteColor]; 

    *[self.view addSubview:myScrollView]; 
    UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(0,100,960,40)]; 
    myLabel.text = [mathsPracticeTextArray componentsJoinedByString:@" "]; 
    [myScrollView addSubview:myLabel]; 
    [myLabel release];* 
} 

- (void)didReceiveMemoryWarning { 

    [super didReceiveMemoryWarning]; 

} 

- (void)viewDidUnload { 
} 


- (void)dealloc { 

    [myScrollView release]; 
    [mathsPracticeTextArray release]; 
    [super dealloc]; 

} 

@end 
+0

Pouvez-vous mettre le journal du débogueur s'il vous plaît? –

+0

Tout ce que je reçois du débogueur est "session démarrée" il compile vraiment juste avec juste un avertissement mais il ne montre pas mon texte de mathspractice.txt –

+0

Ai-je besoin d'une étiquette dans IB? –

Répondre

1

Je devine que mathsPracticeTextArray est déclarée comme NSArray* ou NSMutableArray*, auquel cas l'attribution d'un NSString* à elle (comme cela arrive dans -(void)loadText) provoquera l'avertissement que vous mentionnez dans votre titre.

L'avertissement est une bonne idée de ce qui se passe: NSString est distinct de NSArray, et vous ne pouvez pas traiter l'un comme l'autre. Comme vous attribuez le mauvais type d'objet à la variable, de nombreux messages que vous envoyez à l'objet ne peuvent pas être traités et votre application échouera.

+0

comme ça? - (vide) loadText { \t NSBundle * bundle = [NSBundle mainBundle]; \t NSString * textFilePath = [paquet pathForResource: @ "mathspractice" deType: @ "txt"]; \t NSArray * fileContents = [NSString stringWithContentsOfFile: textFilePath]; \t mathsPracticeTextArray = fileContents; \t } –

+0

Le code ne fonctionne jamais bien dans les commentaires; trop bordélique. Changer le type de 'fileContents' déplace simplement le problème sur une ligne différente, puisqu'il stocke maintenant une chaîne en tant que tableau. Regardez les méthodes de 'NSArray' (http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/NSArray.html). En outre, 'stringWithContentsOfFile:' est obsolète (http://developer.apple.com/mac/library/DOCUMENTATION/Cocoa/Reference/Foundation/Classes/NSString_Class/DeprecationAppendix/AppendixADeprecatedAPI.html#//apple_ref/doc/uid/20000154 -stringWithContentsOfFile_). – outis

Questions connexes