Ho provato a verificare l'occorrenza di una sottostringa in una NSString in due modi, entrambi si sono bloccati. Questo è un oggetto NSString che ottengo da una delle proprietà di NSManagedObject.Verificare la sottostringa di NSString che si interrompe
Utilizzando NSRange
NSString *searchString = @"drive";
NSRange range = [text rangeOfString:searchString options:(NSCaseInsensitiveSearch)];
if (range.location != NSNotFound) { NSLog(@"Found"); }
Utilizzando NSScanner
NSScanner *scanner = [NSScanner scannerWithString:text];
NSLog(@"%d",[scanner scanString:searchString intoString:nil]);
Entrambi funzionano quando text = @ "drive" ma causano arresti anomali di EXC_BAD_ACCESS quando il testo è "I drive" o "drive to". Non succede nulla se il testo è "idrive" o "driveto".
Anche estraneo, a volte gli esempi generano NSInvalidArgumentExceptions, dicendo che ho provato a passare un oggetto NSCFSet o DateComponents a rangeOfString :, nessuno dei quali uso nella mia app.
Qualche idea?
Che cos'è il testo? Cosa contiene? –
Quale chiamata al metodo si arresta? Come viene creato il testo? La mia scommessa è che il testo è finito e non più valido. – zaph
@JeremyP Penso che stia succedendo sto ottenendo l'attributo di stringa dal mio NSManagedObject, in questo modo: text = managedObject.text; quindi sto cancellando managedObject. Quindi ho ragione nel dire che il testo non contiene una stringa, contiene un puntatore a managedObject.text, che non esiste più? – ntesler