2

我正在寻找将一个 NSArray 从 viewcontroller.m 文件发送到 data.js 文件,但它没有在 JavaScript 中打印任何内容。以下是我的代码。

在我的 viewdidload 方法中

   - (void)webViewDidFinishLoad:(UIWebView*)theWebView
{
    // Black base color for background matches the native apps
    CDV=[[CDVViewController alloc]init];
    news=[[NSArray alloc]initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"latest news" ofType:@"plist"]];
    NSArray *newsItems=[[NSArray alloc]init];
    newsItems=[news valueForKey:@"News"];
    NSData *jsonArray = [self arrayToJSON:newsItems];
    NSString *jsonString = [[NSString alloc] initWithData:jsonArray
                                                 encoding:NSUTF8StringEncoding];
    NSString *jsCall = [NSString stringWithFormat:@"yourJsFunction([%@])", jsonString];
    [theWebView stringByEvaluatingJavaScriptFromString:jsCall];
   NSLog(@"%@",jsonString);
   // theWebView.backgroundColor = [UIColor blackColor];

    return [super webViewDidFinishLoad:theWebView];
}


   - (NSData *) arrayToJSON:(NSArray *) inputArray
{
    NSError *error = nil;
    id result = [NSJSONSerialization dataWithJSONObject:inputArray
                                                options:kNilOptions error:&error];
    if (error != nil) return nil;
    return result;
}

在我的 one.js 文件中,我有以下代码:

function yourJsFunction(arr){
    for(var i=0;i<arr.length;i++){
        document.write(arr[i]);
    }
    return arr;
}

输出是:

ഡാറ്റാസെന്റർ:സത്യവാങ്മൂലംഅനുമതി‌,കാശ്മീർനയത്തിൽയുയുഎസ്‌ എസ്‌ എസ്‌ എസ്‌ എസ്‌ എസ്‌യുയുയുയുസമയപരിധിസമയപരിധിതീരാൻതീരാൻതീരാൻതീരാൻമാത്രംമാത്രംമാത്രംമാത്രം;ഇനി;ഇനിഇനിജയിൽശിക്ഷയും,ഡീസൽഡീസൽ:കെഎസ്ആർടിസിസബ്‌സിഡി:കെഎസ്ആർടിസികെഎസ്ആർടിസിസമർപ്പിക്കണം‌ സമർപ്പിക്കണം‌ സമർപ്പിക്കണം‌

但我希望他们每个人分开而不是放“,”

电流输出:

在此处输入图像描述

新图片 在此处输入图像描述

4

2 回答 2

1

js 文件有一些变化
1.Convert the arr to proper string using toString() 2.split that new string

var b=arr.toString().split(',');

现在打印 document.write(b[1]); 它的工作!!!!

并在 .m 文件中像 "@Divaka" 的选项

尝试在此处更改选项 NSJSONSerialization dataWithJSONObject: 从 kNilOptions 到 NSJSONWritingPrettyPrinted

于 2013-10-21T12:40:08.513 回答
0

好像你已经在newsItems变量中传递了一个字符串。然后你调用yourJsFunction([%@])- 参数是你的参数数组(%@)。然后你尝试打印 js 对象并得到 ["ഡാറ്റാ സെന്റര്‍ കേസ്: സത്യവാങ്മൂലം സമര്‍പ്പിക്കാന്‍ അനുമതി‌ ","കാശ്മീര്‍ നയത്തില്‍ മാറ്റമില്ലെന്ന് യു.എസ്‌","നിതാഖാത്‌ സമയപരിധി തീരാന്‍ 14 ദിവസം മാത്രം; ഇനി പിടിക്കപ്പെട്ടാല്‍ ജയില്‍ശിക്ഷയും പിഴയും‌ ","ഡീസല്‍ സബ്‌സിഡി: കെഎസ്ആര്‍ടിസി പുതിയ അപേക്ഷ സമര്‍പ്പിക്കണം‌ "]它正是一个字符串对象的数组。请检查您的文件内容,我认为它包含逗号分隔的值。如果是,那么您必须将其分解为字符串数组。

NSString *newsString = ...;// loading from plist
NSArray *newsItems = [newsString componentsSeparatedByString:","];

然后将 newsItems 序列化为 json 并调用 js 函数为

NSString *jsCall = [NSString stringWithFormat:@"yourJsFunction(%@)", jsonString];

代替

NSString *jsCall = [NSString stringWithFormat:@"yourJsFunction([%@])", jsonString];
于 2013-10-21T12:42:37.633 回答