Skip to content

Commit d7d219a

Browse files
author
敛心
committed
修改File.save API,同时支持string或data类型
1 parent abc0173 commit d7d219a

1 file changed

Lines changed: 36 additions & 19 deletions

File tree

  • IOS/SDK/LuaViewSDK/Classes/lvsdk

IOS/SDK/LuaViewSDK/Classes/lvsdk/LVFile.m

Lines changed: 36 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -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)
3742
static 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

Comments
 (0)