简体   繁体   中英

Realm string compression

I am trying to store long strings in Realm (possibly exceeding their 16MB limit). To reduce their size I am attempting to use the lz-string tool to achieve this. However, when I attempt to store the string into Realm I am getting the following error:

[Error: basic_string::resize]

Here is the text before compression:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent a ex quis lacus hendrerit sodales vitae nec leo. Vivamus imperdiet nisi eu quam condimentum, nec porttitor magna blandit. Mauris arcu leo, euismod sed tortor id, elementum congue nibh. Aliquam erat volutpat. Donec tempor magna eget ultricies vestibulum. Morbi ac turpis aliquet nibh rutrum auctor vitae id quam. Maecenas vel nunc erat. Vestibulum vulputate mauris at neque faucibus iaculis. Vivamus luctus, nunc quis maximus pellentesque, nisl sapien consequat sapien, id vestibulum nulla quam sit amet metus. Aliquam vel varius erat.Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Etiam fermentum sit amet lectus quis pharetra. Duis tempor pretium mi quis dapibus. Donec lobortis justo ex. Maecenas dapibus odio non urna maximus pretium. Vivamus et convallis odio.

Sed sed molestie lectus. Nam et diam et lectus sagittis sagittis ornare et sem. Quisque consequat nunc eu libero hendrerit pharetra. Aliquam ac tempus massa. Donec sed dolor tristique, consectetur nunc nec, fringilla orci. Proin lobortis ipsum vel lorem aliquet posuere. Praesent dapibus metus iaculis, aliquet tortor eget, blandit sem. Vivamus eleifend consectetur ullamcorper. Suspendisse elementum diam libero, eu vestibulum arcu sagittis nec. Etiam at pellentesque augue, vel iaculis dolor. Cras quis dictum urna. Ut ultricies aliquet arcu a porttitor. In vel purus eget ex mattis porttitor ut congue massa. Duis sagittis nisl elit, id mattis magna pulvinar a.

Integer ac rhoncus purus. Ut vitae orci eros. Curabitur ullamcorper massa id risus efficitur, et laoreet ex consequat. Nunc nec suscipit est. Phasellus ac est ex. Etiam odio erat, ultrices in fermentum in, pretium non justo. Phasellus posuere nisl eu odio placerat, quis luctus arcu auctor. Nunc eu ligula sem. Nam non pharetra nisl. Suspendisse congue augue hendrerit, sagittis ex quis, mattis est. Aenean sed nibh vel sem tincidunt gravida vel vitae mauris. Morbi a dui sed lorem tristique accumsan ac at neque. Donec nec enim nulla.

Nullam vitae aliquam leo, eu auctor diam. Suspendisse a venenatis orci. Proin ut tellus eleifend, finibus erat non, egestas tortor. Phasellus sed augue pulvinar, porta arcu sed, luctus felis. Suspendisse at gravida felis, eu tempus lectus. Phasellus imperdiet enim eget vulputate facilisis. Nunc magna tellus, condimentum non elementum eu, faucibus et mi. Morbi nec nisl et purus sollicitudin mollis. Nam eget arcu vitae nisl tincidunt tristique id sed est. Nulla lobortis diam hendrerit nunc pretium varius eu a lectus.

And here is the text after compression:

᐀⌠搞삜ᓀ똠▀ᰌ␄쨁떄疐ׄČ᎔聨䀘쨀臒泆䩳奴ඓ『戎㸲è䀀冁丛曤⮈Ǣ#ꘁ⇰偩鴈\熘ಱ⠸⯢刀ᮙ䔡鮷휊ಀ櫈⹔온ࢨ瀰簴鸂죢飚顔谬糔⫘ఠꢰ꒤摄ࠔ⋌樀䘆雒 눔 ᐰ䘾僴為瀸₤Մ져嵎ᦤ ꊘ炱閦㈀芒㨩鄔Ҙ꒨㬲"Ⳟ鳡╥ᗢ∱飸ꐶ䋎⹊䖕还㋵낕ホ誁桬ᛤ昲ᥢƀ᳡䠦蜈蛥⁹왉⨯텀산偌➓೅쭭䠁ྴ㯤腲㵐ܝꋔ곑ロ㱰ᴢ쀆撎꒙邆䞀耤ᄈ駰頎㆛≍죨甲Ċႋ⨥᜻•➠⢠謜춉뜠᪍챺ؽ褚딦줂䕓凈ợ᫜ኔ⚹嫈傹⩀ؐ㎠ 上顨挣에倡ᐝΥ訊憬஛ᢈ챌-䳅似⣴ˊᒗڎꛌ⪼澝̠ω뗢섛⡂ꈲ錌咮发䜘ೆ셤㣨沾㜗㶇趐䙉䦕囙\䒊⥮摚欳癐㴾楉腝㴲둨੓轘梇죱僰⊬섏ှ 訉簇駃鏨倥䁑ᖱ舰棘묇袘ⁿ∃ ᐉ‷ୱ⨪骫句ࠨ갓㤄嬄᪞超㠂얀2ꃀㄌ紓蝫₋ᎇ磈\雎䇰順袆䄔뉙䂦㄰ՏÑ̅ሀ㴠髉␧⠤馥䤒▍拘ꠓ븠㫌肺鐮䥰㉻븠檜䛁౸ 쌼ȑ䎨髬✁묖ꒇ⃃태越⌠亖ᗘ죲ᐌ⅁ぬꁘⴡ⅁⸈쓹ᘉᇀ奂蒠⻀憩蕺ʐꤠ꺔╞䂌뎑܃ ࠍ偐딹ꢂ凢뢄枥蔔灜༈ࠓ̀ᘲ㬜恄딤械䢈˫㉉䠤腤삝ᦛ毚銢⛒⑲䪒惤㈱⋤㪩ꬮ莓䈠⳴㾨⣮鎁଀좡芏箾簴ꒂᄔಀʫ邏ᡚ㵥ࣶ偹ń凵㈀ब슸ꕃ✊蹃䚂ʔ蔞藺㍽䄛䒰胳⏧⌠ৎ﬽賫힨쵤㖣쓬詽㍱ꠌ븆鐔蛄胊 쏜㰐⌂頬ᆍ㭰 ڎ룮⋋Ĉ큺蛜Ԁ࡮ꭕƴ횥⑦ꁢ㘖਻狜뛦䍰崹b쁰ేɨ虧ⱦ覦搕ꂹDZ敏鬁ꪄ䂇첅ḧ鈄왛㬽ƌ볎⹖磀ធణ噤泎宓࡝꟡좩쒋렓㕆锋ꁄ띅藰롪bピي瞮㻑⋄젂⚙緤蠌ᡚ梒鏗礃鋹険뛛둘厛ܲ玔☂罙嘤䨯჊悷䰾㤯⟎䖇ƍ 쩠叺ꈌ㌈䈇爂—ᮀ瀿쓙ꈮ櫉縿쐄쁗䉿Ⴇﳂ뼗兀ࣀ 乌脻⋰岏쩁䠡恕⎠お ꬪἼ鴭┶ 쬤玫≁鹄೩޵ྡྷ썐쏶唤⇪蹗☇ϳꝑ쬵섀뻊ᆁ˩ࡘᝇ롶鼐ꌀ厾⍮ꄐ⪟Ꮻⷥꭆ갅ൂ둶蠕ਢ䂊ဃ둸䇰၇ 肊ข퐙氣傄⑤麋仭앐ᙨ蒜ꄒКㄎ鏠ن褸ʏ貝姇콸 긹渧ڑ뎤Ꭴ耷釔급ऩᘹ逜ঀ⫄ứ꒩ꆈₒࡀ찾ํ碧卞魘쒊蠼㝲⑅ᒓ豠ᰱ㶄偘⠈愘韫䉗ꄇ쪒쳩頃䲼凼㐜蠆廊㧘璖\

According to the demo on the site above, the text is 5430 bytes before compression and 1480 bytes afterwards, clearly well under 16MB in both cases.

Not sure if the website is implying that only the default JS local storage implementation is supported from the way it refers to local storage. Other than that, has anyone tried using this compresison tool with Realm and gotten it to work? Or seen this error?

Having read the API, I realised that the compress(string) method returns an "invalid" UTF-16 string. Using compressToUTF16(string)/compressToBase64(string) and their respective decompress methods do not give the error (although the former is not working for me but that's a separate issue).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM