Любая идея, как избежать этого утверждения в DDTokenCache и что это значит? - PullRequest
27 голосов
/ 21 января 2011

Я использую NSDataDetector с NSTextCheckingTypeLink для поиска строки для поиска ссылок (например, https://stackoverflow.com/questions) внутри нее. Обычно это работает нормально, но когда строка содержит определенные очень длинные ссылки (200+ символов) после пробела и другого слова я получаю следующее утверждение:

> 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

Это текст, который вызывает это:

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

Кто-нибудь знает, что стоит за этим, или имеет какое-либо другое понимание этого?

Ответы [ 2 ]

1 голос
/ 18 февраля 2014

Решено:. Проблема с детекторами данных UITextView

1004 * Перейдите через 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
};

Если вы установите UIDataDetectorTypeAll или UIDataDetectorTypeAddress или UIDataDetectorTypeCalendarEvent затемiOS создает проблемы на iOS5.0 и выше.

textview.dataDetectorTypes=UIDataDetectorTypeAll; 

или

textview.dataDetectorTypes=UIDataDetectorTypeAddress | UIDataDetectorTypeCalendarEvent; 

Тогда иногда это создает проблемы на iOS5.0 и выше.

Таким образом, вам необходимо установить детекторы данных явно:

textview.dataDetectorTypes = UIDataDetectorTypeLink | UIDataDetectorTypePhoneNumber;
0 голосов
/ 11 ноября 2012

Вы можете предварительно обработать текст, заменив те ссылки, которые создают проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...