2009-10-30 11 views
8

Ho un metodo di analisi RSS e ho bisogno di rimuovere spazi bianchi e altre sciocchezze dal mio sommario html estratto. Ho un tipo NSMutableString 'currentSummary'. Quando chiamo:NSMutableString stringByReplacingOccurrencesOfString Warning

currentSummary = [currentSummary 
     stringByReplacingOccurrencesOfString:@"\n" withString:@""]; 

Xcode mi dice "attenzione: incarico dal tipo distinto Objective-C"

Cosa c'è di sbagliato in questo?

risposta

38

Se currentSummary è già un NSMutableString, non tentare di assegnare un normale NSString (il risultato di stringByReplacingOccurrencesOfString:withString:) ad esso.

utilizzare invece il mutabile equivalente replaceOccurrencesOfString:withString:options:range:, o aggiungere una chiamata al mutableCopy prima della cessione:

// Either 
[currentSummary replaceOccurencesOfString:@"\n" 
           withString:@"" 
            options:NULL 
            range:NSMakeRange(0, [receiver length])]; 

// Or 
currentSummary = [[currentSummary stringByReplacingOccurrencesOfString:@"\n" 
                  withString:@""] 
        mutableCopy];
+0

Grazie! Ha funzionato alla grande – quantum

+0

Meraviglioso! Grazie mille! +1 –

0

Che di solito significa che è caduto gli asterischi nella definizione di (in questo caso) currentSummary.

Quindi è molto probabile che:

NSMutableString currentSummary; 

quando si ha bisogno:

NSMutableString *currentSummary; 

Nel primo caso, dal momento che le classi Objective-C sono definiti in strutture di tipo, il compilatore pensa il tentativo di assegnare una NSString a una struttura.

Faccio questo errore di battitura su base dolosa.

3

Questa grande opera per gli elementi annidati oltre naturalmente:

* Redatta *

// Get the JSON feed from site 
myRawJson = [[NSString alloc] initWithContentsOfURL:[NSURL 
      URLWithString:@"http://yoursite.com/mobile_list.json"] 
      encoding:NSUTF8StringEncoding error:nil]; 

// Make the content something we can use in fast enumeration 
SBJsonParser *parser = [[SBJsonParser alloc] init]; 
NSDictionary * myParsedJson = [parser objectWithString:myRawJson error:NULL]; 
[myRawJson release]; 
allLetterContents = [myParsedJson objectForKey:@"nodes"]; 

    // Create arrays just for the title and Nid items 
    self.contentTitleArray = [[NSMutableArray alloc]init]; 

    for (NSMutableDictionary * key in myArr) { 
     NSDictionary *node = [key objectForKey:@"node"]; 
     NSMutableString *savedContentTitle = [node objectForKey:@"title"];   

     // Add each Title and Nid to specific arrays 
     //[self.contentTitleArray addObject:contentTitle]; 

     //change each item with & to & 
     [self.contentTitleArray addObject:[[savedContentTitle  
           stringByReplacingOccurrencesOfString:@"&" 
           withString:@"&"] 
           mutableCopy]]; 

    } 

Il codice qui sotto, come mostrato in caso d'uso di cui sopra potrebbe essere utile.

[self.contentTitleArray addObject:[[contentTitle 
            stringByReplacingOccurrencesOfString:@"&" 
            withString:@"&"] 
            mutableCopy]]; 
+0

Ciao, Pat! Non sono sicuro che la tua risposta risponda davvero alla domanda posta. Suggerirei anche che invece di spiegare "contentTitleArray is ..." potresti semplicemente scrivere un codice di esempio. Sai, il minimo richiesto in modo che sia tu che la persona che hai posto la domanda abbiano una base comune su cui capire cosa significhi ognuno di voi. Grazie per aver dedicato del tempo a scrivere una risposta, e buona fortuna a Stack Overflow! – scraimer

+1

Ok, sono andato avanti e ho aggiunto il mio caso d'uso. Speriamo che questo sia utile per i passanti. – Pat