如何将Int值传递给Swift中的Objective C函数?
问题描述:
我想从Swift传递一个整数值到Objective C函数,我可以在其中处理它。如何将Int值传递给Swift中的Objective C函数?
目标C函数定义是
(void)getAllDevices:(NSInteger *)limit :(NSInteger *)offset
的目标C的功能是调用DemoSDK的SDK的一部分。
我尝试使用此函数调用
从斯威夫特传递值我试图做这样
DemoSDK.getAllDevices(10,10)
惟独误差
不能转换类型的值Int到预期的参数类型UnsafeMutablePointer
我对Objective C非常陌生,这绝对是一个业余爱好者的问题。 我想发送一个int值到我可以处理int值的目标C函数。我该怎么做?请帮忙。
答
参数不询问整数,它们要求引用整数。这是通过Swift中的&
实现的。
var limit = Int()
var offset = Int()
DemoSDK.getAllDevices(&limit, &offset)
+1
Nitpick - 在Objective-C代码中,它要求指向整数,没有引用。 – rmaddy
答
有两种相似但不同的方法可能会被误解。
-
通常的方法是
init(contentsOfURL url: NSURL, encoding enc: UInt) throws
的
encoding
参数接受一个NSStringEncoding
值,以指定的编码,例如let string = try? String(contentsOfURL:url, encoding:NSUTF8StringEncoding)
-
通过使指针作为
usedEncoding
参数检索从文件的编码的第二种方法init(contentsOfURL url: NSURL, usedEncoding enc: UnsafeMutablePointer<UInt>) throws
文档说:
返回时,如果URL被成功地读出,包含在编码使用 来解释数据。
这意味着你必须传递一个指针,它将包含确定的文件编码。
var encoding : NSStringEncoding = 0 let string = try? String(contentsOfURL:url, usedEncoding:&encoding)
你不能传递一个'NSInteger',你传递一个'NSInteger的*'。没有看到更多的代码,我不能给你很多帮助,但你可以尝试做一些事情(在一行中,抱歉)'var limit = 10; var offset = 10; withUnsafePointer(to:&limit){在withUnsafePointer(to:&offset)中限制{DemoSDK.getAllDevices(limit,offset)中的偏移量}}' –
NSInteger不是来自NSInteger的方法调用remove *前面的指针类型,然后尝试。 –
你可以尝试[不能将Int类型的值转换为UnsafeMutablePointer类型的预期参数](http://stackoverflow.com/a/36079331/3483725) –