Skip to content

API文档_iOS OS X_Swift_LuaValue

vimfung edited this page Nov 15, 2018 · 5 revisions

API文档 > 类目录 > LuaValue

LuaValue

Summary

所有原生层与lua层的数据交互主要由该类型来封装和传递(对于导出类型也一样,只是在方法参数传入和返回时由LuaContext自动封装,不需要开发者介入)。其统一了交互中传输的数据类型,帮助开发者快速理解并对其进行使用。

继承

LuaValue > NSObject

Constructor

init()

初始化包含nilLuaValue对象。在给lua传递一个nil值时,可以通过该方法创建对象并传给lua层。

声明
init()
返回值

包含nilLuaValue对象实例

示例

下例演示在注册方法中返回nil到lua层

context.registerMethod(methodName: "testMethod") { (arguments) -> LuaValue in
    return LuaValue();
}

init(intValue:)

创建包含整型值的LuaValue对象。该方法允许传入一个整型数值来初始化对象,由于lua中所有数值类型都使用number(浮点数)来表示,因此在传递给lua后会进行转换。

声明
init(intValue : Int)
init(intValue : Int64)
init(intValue : UInt64)
参数
  • intValue: 整型值。
返回值

包含整型值的LuaValue对象实例


init(doubleValue:)

创建包含浮点值的LuaValue对象。该方法允许传入一个浮点数值来初始化对象。

声明
init(doubleValue : Double)
参数
  • doubleValue: 浮点值。
返回值

包含浮点值的LuaValue对象实例


init(booleanValue:)

创建包含布尔值的LuaValue对象。在Swift中的truefalse,会分别对应lua中的truefalse

声明
init(booleanValue : Bool)
参数
  • booleanValue: 布尔值truefalse
返回值

包含布尔值的LuaValue对象实例


init(stringValue:)

创建包含字符串的LuaValue对象。

声明
init(stringValue : String)
参数
  • stringValue: 字符串
返回值

包含字符串的LuaValue对象实例


init(arrayValue:)

创建包含数组(Array类型)的LuaValue对象。数组中的元素可以为任意类型,LSC会根据实际情况来解析并转换到lua对应的数据类型。

声明
init(arrayValue : Array<Any>)
参数
  • arrayValue: 数组对象
返回值

包含数组的LuaValue对象实例

示例
let arr:[Any] = [1024, "Hello World"];
let arrayVal = LuaValue(arrayValue: arr);

init(dataValue:)

创建包含二进制数据(Data类型)的LuaValue对象。lua中没有对应的二进制数据类型,通过该方法传给lua的值会转换成string类型进行保存。

声明
init(dataValue : Data)
参数
  • dataValue: 二进制数据
返回值

包含二进制数据的LuaValue对象实例

示例
let data = "Hello World".data(using: .utf8)
let dataVal = LuaValue(dataValue: data!)

init(dictionaryValue:)

创建包含字典(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)

init(pointerValue:)

创建包含对象指针的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)

init(functionValue:)

创建包含lua方法(function类型)的LuaValue对象示例。该方法要求传入一个LuaFunction类型对象,其对应lua中的function类型,需要注意的是LuaFunction无法在原生层直接创建,需要lua层将方法传递给原生层时LSC框架自动构建对象。

声明
init(functionValue : LuaFunction)
参数
  • functionValue: lua方法
返回值

包含lua方法的LuaValue对象实例。


init(tupleValue:)

创建包含元组的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)

init(typeValue:)

创建包含导出类型的LuaValue对象实例。导出类型为LSC框架将原生类型映射到lua层作为一种类型进行操作的机制,该类型在原生表示为LuaExportTypeDescriptor

声明
init(typeValue : LuaExportTypeDescriptor)
参数
  • typeDescriptor: 导出到lua的原生类型描述对象
返回值

包含导出类型的LuaValue对象实例。


init(objectValue:)

传入一个对象来创建LuaValue对象实例,该方法可以让开发者不需要关注传入对象的类型,方法内部会根据传入对象作正确的转换。

声明
init(objectValue : AnyObject)
参数
  • objectValue: 对象,可以任意合法的Swift引用类型对象实例。
返回值

根据传入的参数值不同,创建包含不同值的LuaValue对象实例。

Properties

type

表示包含值的类型,为枚举类型,取值如下:

名称 说明
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


intValue

将包含的值转换为整型值并返回,有以下几种情况:

  1. 为数值类型,直接转换
  2. 为字符串类型,当只包含数字内容,则直接转换,否则为0
  3. 为对象或指针类型,返回对象或指针的地址值。
权限

只读

类型

Int


doubleValue

将包含的值转换为浮点数并返回,有以下几种情况:

  1. 为数值类型,直接转换
  2. 为字符串类型,当只包含数字内容,则直接转换,否则为0
  3. 为对象或指针类型,返回对象或指针的地址值。
权限

只读

类型

Double


booleanValue

将包含的值转换为布尔值并返回,有以下几种情况:

  1. 为数值类型时,当数值为0则转换为true,否则为false
  2. 为字符串类型时,当字符串内容为不为零的数值字符串,"YES","true"时为true,其他的为false
  3. 非上述两种类型时,如果值不为nil则为true,否则为false
权限

只读

类型

Bool


stringValue

将包含的值转换为字符串并返回。有以下几种情况:

  1. 为数值类型,直接转换为对应数字的字符串
  2. 为字符串类型,直接返回
  3. 为指针类型,返回指针的地址字符串
  4. 为对象类型,返回对象description信息
权限

只读

类型

String


arrayValue

返回包含的数组对象。如果非数组类型LSCValue对象,则返回nil

权限

只读

类型

Array<Any>


dictionaryValue

返回包含的字典对象。如果非字典类型LSCValue对象,则返回nil

权限

只读

类型

Dictionary<AnyHashable , Any>


objectValue

将包含的值转换为对象并返回。这种方式可以获取LuaValue所包含的值,在不关心值类型的情况下可以使用。

权限

只读

类型

Any


dataValue

将包含的值转换为二进制数据并返回。有以下几种情况:

  1. 为二进制数据类型,直接返回
  2. 为字符串类型,转换为UTF8编码的二进制数据
  3. 非上述类型,返回nil
权限

只读

类型

Data


functionValue

返回包含的lua方法,如果非lua方法类型的LuaValue对象,则返回nil

权限

只读

类型

LuaFunction


pointerValue

将包含的值转换为指针并返回。如果是指针类型LuaValue对象则直接返回,否则返回值的指针地址并封装为LuaPointer返回。

权限

只读

类型

LuaPointer


typeValue

返回包含的导出类型,如果非导出类型的LuaValue对象,则返回nil

权限

只读

类型

LuaExportTypeDescriptor


tupleValue

返回包含的元组,如果非元组类型的LuaValue对象,则返回nil

权限

只读

类型

LuaTuple

Clone this wiki locally