Swift string truncates / does not hold enough content
15:29 03 Mar 2026

I am trying to build up something that uses wkwebview and javascript..So, I am having terrible issues with strings..

They are way too short, meaning that they don't have enough capacity. I have understood that string's capacity is huge, something like that it could fit a bible inside it.. Yet; I am experiencing trouble with it. First, json replies from post message, got truncated, so I had to begin creating methods that shrink json to parts.. Not ideal, not at all.. Anyway..

My script is here:

var script: String = ""
        
        script += """

            let json = JSON.parse(data);
            if (json && json['cargo'] && json['cargo']['loads'] && Array.isArray(json['cargo']['loads']) && Object.keys(json['cargo']['loads']).length > 0 && json['cargo']['loads'][0]['id']) {
                var obj = new Object();
                obj.id = json['cargo']['loads'][0]['id'];
                obj.ordererReference = json['cargo']['loads'][0]['ordererReference'];
                obj.fromname = json['cargo']['loads'][0]['consignorName];
                obj.fromstreet = json['cargo']['loads'][0]['consignorStreetAddr'];
                obj.frompost = json['cargo']['loads'][0]['consignorPostCode'] + " " + json['cargo']['loads'][0]['consignorPostOffice'];
                obj.fromphone = json['cargo']['loads'][0]['consignorPhone'];
                obj.fromcoords = json['cargo']['loads'][0]['consignorCoordinateX'] + "," + json['cargo']['loads'][0]['consignorCoordinateY'];
                obj.toname = json['cargo']['loads'][0]['consigneeName'];
                obj.tostreet = json['cargo']['loads'][0]['consigneeStreetAddr'];
                obj.topost = json['cargo']['loads'][0]['consigneePostCode'] + " " + json['cargo']['loads'][0]['consigneePostOffice'];
                obj.tophone = json['cargo']['loads'][0]['consigneePhone'];
                obj.tocoords = json['cargo']['loads'][0]['consigneeCoordinateX'] + " " + json['cargo']['loads'][0]['consigneeCoordinateY'];
                obj.toemail = json['cargo']['loads'][0]['consigneeEmail'];
                obj.organizer = json['cargo']['loads'][0]['responsiblePerson'];
                obj.organizerPhone = json['cargo']['loads'][0]['responsiblePhone'];
                obj.loadArrive = json['cargo']['loads'][0]['loadingPlaceArrival'];
                obj.loadBegun = json['cargo']['loads'][0]['fetchTimeRealisationStart'];
                obj.loadEnd = json['cargo']['loads'][0]['fetchTimeRealisation'];
                obj.deliveryArrive = json['cargo']['loads'][0]['deliveryPlaceArrival'];
                obj.deliveryBegun = json['cargo']['loads'][0]['deliveryTimeRealisationStart'];
                obj.deliveryEnd = json['cargo']['loads'][0]['deliveryTimeRealisation'];
                obj.waybill = json['cargo']['loads'][0]['waybillPdfUrl'];
                obj.comments = json['cargo']['loads'][0]['comments'];
                window.webkit.messageHandlers.openLoadDetails.postMessage(JSON.stringify(obj));
            } else {
                window.webkit.messageHandlers.requestError.postMessage("failed to get load details")
            }
        """

and this is what script string variable contains:

let json = JSON.parse(data);
    if (json && json['cargo'] && json['cargo']['loads'] && Array.isArray(json['cargo']['loads']) && Object.keys(json['cargo']['loads']).length > 0 && json['cargo']['loads'][0]['id']) {
        var obj = new Object();
        obj.id = json['cargo']['loads'][0]['id'];
        obj.ordererReference = json['cargo']['loads'][0]['ordererReference'];
        obj.fromname = json['cargo']['loads'][0]['consignorName];
        obj.fromstreet = json['cargo']['loads'][0]['consignorStreetAddr'];
        obj.frompost = json['cargo']['loads'][0]['consignorPostCode'] + " " + json['cargo']['loads'][0]['consignorPostOffice'];
        obj.fromphone = json['cargo']['loads'][0]['consignorPhone'];
        obj.fromcoords = json['cargo']['loads'][0]['consignorCoordinateX'] + "," + json['cargo']['loads'][0]['consignorCoordinateY'];
        obj.toname = json['cargo']['loads'][0]['consigneeName'];
        obj.tostreet = json['cargo']['loads'][0]['consigneeStreetAddr'];
        obj.topost = json

Yes, that's where it truncates. I first thought that there is a "invisible" character that causes this.. Nothing like that. Then I tried to append to string after this, and it still is the same, second string that I append to it.. Just "disappears"..

Okay, maybe there's something I can't see.. So I remove all content.. Open up a wikipedia with swift page on it, copy a rather big portion from there and insert that to script variable - just to see that it happens again, article gets truncated as well..

What is going on??? How can I make "a long string"? Is there a project setting somewhere that has gone wrong and then limits string's maximum length? So frustrating..

I tried to search for this, but it seems that this isn't very common problem - or I am looking with wrong keywords..

ios swift string