2015-02-27 5 views
0

Моей Javascript функции нужна этот типа массива:Передачи массива словаря функции яваскрипта от прошивки

var data = [{ 
            "sale": "202", 
            "year": "2000" 
            }, { 
            "sale": "215", 
            "year": "2002" 
            }, { 
            "sale": "179", 
            "year": "2004" 
            }, { 
            "sale": "199", 
            "year": "2006" 
            }, { 
            "sale": "134", 
            "year": "2008" 
            }, { 
            "sale": "176", 
            "year": "2010" 
            }]; 

Я хочу, чтобы передать этот массив в качестве аргумента из [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"js_func(%@, %@)", y1Arr, y2Arr]];

Я передаю массив словаря с этот формат:

({ 
    x = "663.78"; 
    y1 = "-0.000"; 
}, 
{ 
    x = "663.88"; 
    y1 = "0.005"; 
}, 
{ 
    x = "663.98"; 
    y1 = "0.019"; 
}, 
{ 
    x = "664.08"; 
    y1 = "-0.001"; 
} 
) 

Но ее не работает ...

+0

Там нет типа словаря в JavaScript. Используйте '[]' вместо '()' в вашем последнем фрагменте, чтобы сделать его массивом. О, а что «не работает»? – A1rPun

+0

({ х = "663,78"; у1 = "-0,000"; }, { х = "663.88"; у1 = "0,005"; }, { х = "663,98"; y1 = "0,019"; }, { х = "664.08"; y1 = "-0.001"; } ), это бревно из отладчика. Моя функция JS не вызвана. Я пытался поставить и предупредить, но не повезло. – Nil

ответ

1

Вы не должны проходить непосредственно ваши массивы в stringWithFormat, вы должны сначала преобразовать их в объекты JSON, а затем передать эти JSon объекты (как строковое представление) в stringWithFormat

NSData *data1 = [NSJSONSerialization dataWithJSONObject:y1Arr options:0 error:NULL]; 
NSString *y1ArrStr = [[NSString alloc] initWithData:data1 encoding:NSUTF8StringEncoding]; 

NSData *data2 = [NSJSONSerialization dataWithJSONObject:y2Arr options:0 error:NULL]; 
NSString *y2ArrStr = [[NSString alloc] initWithData:data2 encoding:NSUTF8StringEncoding]; 

[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"js_func(%@, %@)", y1ArrStr, y2ArrStr]]; 
+0

ОК, теперь функция работает .. но когда я пытаюсь ti alert (arrayData), она отображает странные значения, такие как: [object Object], [object Object] – Nil

+1

Для javascript такие вещи, как {x = "663.78"; y1 = "-0,000"; } являются объектами, и он не знает, как сделать их внутри предупреждения, попробуйте оповещение (arrayData [0] .x) –

Смежные вопросы