-
Notifications
You must be signed in to change notification settings - Fork 115
API文档_iOS OS X_Swift_LuaValue
所有原生层与lua层的数据交互主要由该类型来封装和传递(对于导出类型也一样,只是在方法参数传入和返回时由LuaContext
自动封装,不需要开发者介入)。其统一了交互中传输的数据类型,帮助开发者快速理解并对其进行使用。
LuaValue
> NSObject
初始化包含nil
的LuaValue
对象。在给lua传递一个nil
值时,可以通过该方法创建对象并传给lua层。
init()
包含nil
的LuaValue
对象实例
下例演示在注册方法中返回nil
到lua层
context.registerMethod(methodName: "testMethod") { (arguments) -> LuaValue in
return LuaValue();
}
创建包含整型值的LuaValue
对象。该方法允许传入一个整型数值来初始化对象,由于lua中所有数值类型都使用number
(浮点数)来表示,因此在传递给lua后会进行转换。
init(intValue : Int)
init(intValue : Int64)
init(intValue : UInt64)
- intValue: 整型值。
包含整型值的LuaValue
对象实例
创建包含浮点值的LuaValue
对象。该方法允许传入一个浮点数值来初始化对象。
init(doubleValue : Double)
- doubleValue: 浮点值。
包含浮点值的LuaValue
对象实例
创建包含布尔值的LuaValue
对象。在Swift中的true
和false
,会分别对应lua中的true
和false
init(booleanValue : Bool)
- booleanValue: 布尔值
true
或false
包含布尔值的LuaValue
对象实例
创建包含字符串的LuaValue
对象。
init(stringValue : String)
- stringValue: 字符串
包含字符串的LuaValue
对象实例
创建包含数组(Array
类型)的LuaValue
对象。数组中的元素可以为任意类型,LSC会根据实际情况来解析并转换到lua对应的数据类型。
init(arrayValue : Array<Any>)
- arrayValue: 数组对象
包含数组的LuaValue
对象实例
let arr:[Any] = [1024, "Hello World"];
let arrayVal = LuaValue(arrayValue: arr);
创建包含二进制数据(Data
类型)的LuaValue
对象。lua中没有对应的二进制数据类型,通过该方法传给lua的值会转换成string
类型进行保存。
init(dataValue : Data)
- dataValue: 二进制数据
包含二进制数据的LuaValue
对象实例
let data = "Hello World".data(using: .utf8)
let dataVal = LuaValue(dataValue: data!)
创建包含字典(Dictionary
类型)的LuaValue
对象。字典中的元素可以为任意类型,LSC会根据实际情况来解析并转换到lua对应的数据类型。
init(dictionaryValue : Dictionary<AnyHashable, Any>)
- dictionaryValue: 字典对象
包含字典的LuaValue
对象实例
let dict : [AnyHashable : Any] = ["key1" : 1024, "key2" : "Hello World"]
let dictVal = LuaValue(dictionaryValue: dict)
创建包含对象指针的LuaValue
对象实例,该方法要求传入一个LuaPointer
类型对象,其包含了一个指针,该类型会转换为lua层中的light userdata
类型。
init(pointerValue : LuaPointer)
- pointerValue: 指针类型对象。
包含指针类型的LuaValue
对象实例。
let object = NSObject();
let ptr = LuaPointer(ptr: Unmanaged.passRetained(object).toOpaque())
let ptrVal = LuaValue(pointerValue: ptr)
创建包含lua方法(function
类型)的LuaValue
对象示例。该方法要求传入一个LuaFunction
类型对象,其对应lua中的function
类型,需要注意的是LuaFunction
无法在原生层直接创建,需要lua层将方法传递给原生层时LSC框架自动构建对象。
init(functionValue : LuaFunction)
- functionValue: lua方法
包含lua方法的LuaValue
对象实例。
创建包含元组的LuaValue
对象实例。该方法用于原生层向lua层返回一个元组返回值时使用(如local x,y = getPos();
),其要求传入一个LuaTuple
类型来表示lua中的元组。
init(tupleValue : LuaTuple)
- tupleValue: 返回给lua的元组
包含元组的LuaValue
对象实例。
let tuple = LuaTuple();
tuple.addReturnValue(1024)
tuple.addReturnValue("Hello World")
let retVal = LuaValue(tupleValue: tuple)
创建包含导出类型的LuaValue
对象实例。导出类型为LSC框架将原生类型映射到lua层作为一种类型进行操作的机制,该类型在原生表示为LuaExportTypeDescriptor
。
init(typeValue : LuaExportTypeDescriptor)
- typeDescriptor: 导出到lua的原生类型描述对象
包含导出类型的LuaValue
对象实例。
传入一个对象来创建LuaValue
对象实例,该方法可以让开发者不需要关注传入对象的类型,方法内部会根据传入对象作正确的转换。
init(objectValue : AnyObject)
- objectValue: 对象,可以任意合法的Swift引用类型对象实例。
根据传入的参数值不同,创建包含不同值的LuaValue
对象实例。
表示包含值的类型,为枚举类型,取值如下:
名称 | 说明 |
---|---|
LuaValueType.Nil |
空值,nil
|
LuaValueType.Number |
数值类型 |
LuaValueType.Boolean |
布尔类型 |
LuaValueType.String |
字符串类型 |
LuaValueType.Array |
数组类型 |
LuaValueType.Map |
字典类型 |
LuaValueType.Ptr |
指针类型 |
LuaValueType.Object |
对象类型 |
LuaValueType.Integer |
整型 |
LuaValueType.Data |
二进制数据类型 |
LuaValueType.Function |
方法类型 |
LuaValueType.Tuple |
元组类型 |
LuaValueType.Class |
导出类型 |
只读
LuaValueType
将包含的值转换为整型值并返回,有以下几种情况:
- 为数值类型,直接转换
- 为字符串类型,当只包含数字内容,则直接转换,否则为0
- 为对象或指针类型,返回对象或指针的地址值。
只读
Int
将包含的值转换为浮点数并返回,有以下几种情况:
- 为数值类型,直接转换
- 为字符串类型,当只包含数字内容,则直接转换,否则为0
- 为对象或指针类型,返回对象或指针的地址值。
只读
Double
将包含的值转换为布尔值并返回,有以下几种情况:
- 为数值类型时,当数值为0则转换为
true
,否则为false
- 为字符串类型时,当字符串内容为不为零的数值字符串,"YES","true"时为
true
,其他的为false
- 非上述两种类型时,如果值不为
nil
则为true
,否则为false
只读
Bool
将包含的值转换为字符串并返回。有以下几种情况:
- 为数值类型,直接转换为对应数字的字符串
- 为字符串类型,直接返回
- 为指针类型,返回指针的地址字符串
- 为对象类型,返回对象
description
信息
只读
String
返回包含的数组对象。如果非数组类型LSCValue
对象,则返回nil
。
只读
Array<Any>
返回包含的字典对象。如果非字典类型LSCValue
对象,则返回nil
。
只读
Dictionary<AnyHashable , Any>
将包含的值转换为对象并返回。这种方式可以获取LuaValue
所包含的值,在不关心值类型的情况下可以使用。
只读
Any
将包含的值转换为二进制数据并返回。有以下几种情况:
- 为二进制数据类型,直接返回
- 为字符串类型,转换为UTF8编码的二进制数据
- 非上述类型,返回
nil
只读
Data
返回包含的lua方法,如果非lua方法类型的LuaValue
对象,则返回nil
。
只读
LuaFunction
将包含的值转换为指针并返回。如果是指针类型LuaValue
对象则直接返回,否则返回值的指针地址并封装为LuaPointer
返回。
只读
LuaPointer
返回包含的导出类型,如果非导出类型的LuaValue
对象,则返回nil
。
只读
LuaExportTypeDescriptor
返回包含的元组,如果非元组类型的LuaValue
对象,则返回nil
。
只读
LuaTuple