Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将NSDictionary克隆到JavaScript对象[iOS Cordova跨平台]_Javascript_Objective C_Arrays_Cordova_Webview - Fatal编程技术网

如何将NSDictionary克隆到JavaScript对象[iOS Cordova跨平台]

如何将NSDictionary克隆到JavaScript对象[iOS Cordova跨平台],javascript,objective-c,arrays,cordova,webview,Javascript,Objective C,Arrays,Cordova,Webview,亲爱的程序员们: 我必须完成一个项目,我是那么接近完成它,但我无法想出如何做到这一点。也许这里有人能帮我 我使用Cordova开发了一个简单的iOS应用程序,其中我必须通过Objective-C加载几个JSON,并且我必须能够在WebView中使用这些数据。每个jSON的数据都分别加载到NSDictionary中,所以当我记录它时,我得到例如: data = ( { "id_string" = TRAVELLING; nam

亲爱的程序员们:

我必须完成一个项目,我是那么接近完成它,但我无法想出如何做到这一点。也许这里有人能帮我

我使用Cordova开发了一个简单的iOS应用程序,其中我必须通过Objective-C加载几个JSON,并且我必须能够在WebView中使用这些数据。每个jSON的数据都分别加载到NSDictionary中,所以当我记录它时,我得到例如:

    data =     (
            {
        "id_string" = TRAVELLING;
        name = Traveling;
        sequence = 0;
    },
            {
        "id_string" = FOOD;
        name = Food;
        sequence = 0;
    },
            {
        "id_string" = FASHION;
        name = Fashion;
        sequence = 0;
    },
            {
        "id_string" = RELAX;
        name = Relax;
        sequence = 0;
    },
            {
        "id_string" = FUN;
        name = Fun;
        sequence = 0;
    },
            {
        "id_string" = CHILDREN;
        name = "For children";
        sequence = 0;
    },
            {
        "id_string" = GIFTS;
        name = Gifts;
        sequence = 0;
    },
            {
        "id_string" = STOCK;
        name = Stock;
        sequence = 0;
    },
            {
        "id_string" = OTHER;
        name = Other;
        sequence = 0;
    }
);
"request_duration" = "0.017858028411865";
status = success;
}
现在我知道有一种方法可以将Objective-C中的数据注入WebView中的JavaScript,那就是创建JavaScript函数,该函数将处理对象创建,并通过

NSString *cText     = @"This is a text from Objective-C";
NSString *cFullText = [NSString stringWithFormat:@"receiveMessage('%@')", cText];
NSString *cResult   = [theWebView stringByEvaluatingJavaScriptFromString:cFullText];
其中receiveMessage是一个Javascript函数

目标是重建一个JavaScript对象,当通过Console.Log进行回显时,该对象将如下所示:

.   [Object, Object, Object, Object, Object, Object, Object, Object, Object]
.   0: Object
.   id_string: “TRAVELLING”
.   name : “Traveling”
.   sequence: 0
.   __proto__: Object
.   1: Object
.   id_string: “FOOD”
.   name : “Food”
.   sequence: 0
.   __proto__: Object
.   2: Object
.   3: Object
.   4: Object
.   5: Object
.   6: Object
.   7: Object
.   8: Object
因此,我可以通过以下方式检索值:

firstIDString = categoriesArray[0].id_string;
firstName     = categoriesArray[0].name;
考虑到这一点,我正在尝试以下方法:

I.为NSDictionary创建一个foreach循环,它将逐行重建对象[我认为还可以,但并不完美]

二,。严格地将接收到的jSON转换为Objective-C,通过JavaScript函数发送一次,然后用slice或类似的东西重新构建它。[我认为更好]

目前,我正在通过以下方式测试第一种方法(认为第二种方法会更好,但不确定应该如何执行):

虽然这会创建一个包含添加信息的数组,但我不确定如何提高ID(对象长度),这样我就不会总是重写0索引

你们对如何做到这一点有什么建议吗? 感谢您的时间和投入

function appendArrayWithDataFromObjeciveC(arrayName,id,keyName,value){


  //arrayName[id] = [];
  //arrayName[id][keyName] = value;
  //arrayName.push( { ID:1, "Name":"whatever" } );
  //arrayName[ id ].keyName = value;
  //arrayName[keyName] = value;

  console.log("Array before:");
  console.log(arrayName);

  var tempArray = [];
  tempArray = {keyName : value};

  arrayName = arrayName.concat(tempArray);

  console.log("Array after:");
  console.log(arrayName);
  return "OK";

}