2011-01-21 9 views
27

estoy usando NSDataDetector con NSTextCheckingTypeLink para buscar una cadena de enlaces (por ejemplo https://stackoverflow.com/questions) dentro de ella. Por lo general, funciona bien, pero cuando la cadena contiene algunos enlaces muy largos (más de 200 caracteres) seguido de un espacio y otra palabra, me sale esta afirmación:alguna idea de cómo evitar esta afirmación en DDTokenCache y lo que significa?

> DDRequire failed: the following assertion will only be logged once 
> 
> assertion on 
> /SourceCache/MobileDataDetectorsCore/MobileDataDetectorsCore-154/Sources/PushDown/DDTokenCache.c:310 
> "delta >= 0" failed :Bad shift in 
> DDTokenCacheMoveStreamOffset, aborting 

Este es el tipo de texto que hace esto:

> blog.somethingorother.com/2011/storynameetcmorestuff/utm_source/eedburnerutmmediumfeedutmcampaign/FeedanutmcontentGooglFeedfetcherutmcampaign/FeedanutmcontentGooglFeedfetcher/eedburnerutm_mediumfeedutmcampaign/FeedanutmcontentGooglFeedfetcherutmcampaign HEY 

¿Alguien sabe qué hay detrás de esto o tiene alguna otra idea al respecto?

+1

debe presentar una [informe de error] (http://bugreport.apple.com) con esta información, junto con un proyecto de ejemplo reproduce el problema. –

+0

OK, haré. Pero todavía espero una solución alternativa que no implique descartar NSDataDetector. – Jim

+2

Para cualquier otra persona que ejecute esto: se archivó con Apple con el ID de problema 8917104. Puede hacer referencia a eso en su informe de error, en caso de que lo haga. – Jim

Respuesta

0

Usted puede procesar previamente el texto de sustitución de esos enlaces que hacen problemas.

+0

Puedes intentar insertar un # o? detrás del enlace antes del downvoter _space_HEY –

+0

- por favor explique. esto suena como una solución válida :) –

1

Resuelto: El problema es que con detectores de datos UITextView.

favor vaya a través UIDataDetectorTypes:

typedef NS_OPTIONS(NSUInteger, UIDataDetectorTypes) { 
UIDataDetectorTypePhoneNumber = 1 << 0,   // Phone number detection 
UIDataDetectorTypeLink   = 1 << 1,   // URL detection  
#if __IPHONE_4_0 <= __IPHONE_OS_VERSION_MAX_ALLOWED 
UIDataDetectorTypeAddress  = 1 << 2,   // Street address detection 
UIDataDetectorTypeCalendarEvent = 1 << 3,   // Event detection 
#endif  

UIDataDetectorTypeNone   = 0,    // No detection at all 
UIDataDetectorTypeAll   = NSUIntegerMax // All types 
}; 

Si establece UIDataDetectorTypeAll o UIDataDetectorTypeAddress o UIDataDetectorTypeCalendarEvent continuación iOS crea problemas en iOS5.0 por encima del promedio.

textview.dataDetectorTypes=UIDataDetectorTypeAll; 

O

textview.dataDetectorTypes=UIDataDetectorTypeAddress | UIDataDetectorTypeCalendarEvent; 

Entonces a veces crea problemas en iOS5.0 y superior.

por lo que necesita para configurar detectores de datos de forma explícita:

textview.dataDetectorTypes = UIDataDetectorTypeLink | UIDataDetectorTypePhoneNumber; 
Cuestiones relacionadas