@@ -34,33 +34,50 @@ static BOOL readCallback(lua_State *L, int callbackIndex, NSString* fileName, NS
3434 return NO ;
3535}
3636
37+ // 参数顺序
38+ // File.save(name, data, callback)
39+ // name: string
40+ // data: string or data
41+ // callback: function (optional)
3742static int file_save (lua_State *L) {
3843 int num = lua_gettop (L);
3944 if ( num>=2 ) {
40- LVUserDataInfo * userData = NULL ;
41- NSString * fileName = nil ;
45+ LVUserDataInfo * contentData = NULL ;
46+ NSString * contentString = nil ;
47+ NSString * fileName = nil ;
4248 int callbackIndex = 0 ;
4349 for ( int i=1 ; i<=num; i++ ) {
44- if ( lua_type (L, i)==LUA_TUSERDATA && userData==nil ) {
45- userData = (LVUserDataInfo *)lua_touserdata (L, i);
46- }
47- if ( lua_type (L, i)==LUA_TSTRING && fileName==nil ) {
48- fileName = lv_paramString (L, i);
49- }
50- if ( lua_type (L,i)==LUA_TFUNCTION ) {
50+ if (i == 1 && lua_type (L, i) == LUA_TSTRING){
51+ fileName = lv_paramString (L, i);
52+ }else if (i == 2 ){
53+ if (lua_type (L, LUA_TSTRING)){
54+ contentString = lv_paramString (L, i);
55+ }else if (lua_type (L, LUA_TUSERDATA)){
56+ contentData = (LVUserDataInfo *)lua_touserdata (L, i);
57+ }
58+ }else if (i == 3 && lua_type (L, i) == LUA_TFUNCTION){
5159 callbackIndex = i;
5260 }
5361 }
54- if ( fileName && userData ) {
55- LVData* lvData1 = (__bridge LVData *)(userData->object );
56- if ( LVIsType (userData, Data) && lvData1.data ){
57- if ( [LVUtil saveData: lvData1.data toFile: [LVUtil PathForCachesResource: fileName]] ){
58- saveCallback (L, callbackIndex, fileName, YES );
59- lua_pushboolean (L, 1 );
60- return 1 ;
61- } else {
62- saveCallback (L, callbackIndex, fileName, NO );
63- }
62+
63+ NSData *content;
64+
65+ if (contentData){
66+ LVData* lvData1 = (__bridge LVData *)(contentData->object );
67+ if ( LVIsType (contentData, Data) && lvData1.data ){
68+ content = lvData1.data ;
69+ }
70+ }else if (contentString){
71+ content = [contentString dataUsingEncoding: NSUTF8StringEncoding];
72+ }
73+
74+ if ( fileName && content ) {
75+ if ( [LVUtil saveData: content toFile: [LVUtil PathForCachesResource: fileName]] ){
76+ saveCallback (L, callbackIndex, fileName, YES );
77+ lua_pushboolean (L, 1 );
78+ return 1 ;
79+ } else {
80+ saveCallback (L, callbackIndex, fileName, NO );
6481 }
6582 }
6683 }
0 commit comments