草庐IT

Unsafepointer

全部标签

ios - Swift 中 SQLite 项目中的 UnsafePointer<Uint8> 问题

我们正在iOS和Swift中实现SQLite,而不使用包装器或Objective-C桥接。一切正常,除了进行查询和提取结果时。问题在于UnsafePointer在Swift中从SQLite返回如下:varquerySQL="SELECTaddress,phoneFROMCONTACTSWHERENAME='myName'"varcQuery=querySQL.cStringUsingEncoding(NSUTF8StringEncoding)varstatement:COpaquePointer=nilifsqlite3_prepare_v2(contactsDB,cQuery!,-1

swift 3 : convert a null-terminated UnsafePointer<UInt8> to a string

我有一个capi,它返回一个空终止字符串,它是一个类型为unsignedchar*的数组。(对应于UnsafePointer)。Swift有初始化器String(validatingUTF8:),但参数必须是UnsafePointer(又名UnsafePointer),并且没有简单的方法可以在两者之间进行转换。如何将这个以null结尾的C字符串转换为Swift字符串? 最佳答案 在Swift3中,String有两个初始化器publicinit(cString:UnsafePointer)publicinit(cString:Unsa

swift - 如何从不可变的非类值中获取 Swift UnsafePointer?

我希望能够从不可变值创建一个UnsafePointer。我尝试做的最简单的复制如下:letnumber:Int=42;varpointer=UnsafePointer(&number);^|Couldnotmake`inoutInt`fromimmutablevalue.由于Int不符合AnyObject,我不能使用unsafeAddressOf()。 最佳答案 根据messageinthe[swift-evolution]mailinglistbyJoeGroff,您可以在将指针传递给另一个函数时简单地将变量包装在数组中。此方法创

ios - UnsafePointer 不再适用于 swift 3

在我从swift2转换为swift3后,下面提到的行弹出错误letvalue=UnsafePointer(array1).pointee'init'isunavailable:use'withMemoryRebound(to:capacity:_)'totemporarilyviewmemoryasanotherlayout-compatibletype.在swift2中就像letvalue=UnsafePointer(array1).memory有人可以解释一下吗?对不起,我对swift3很陌生修改后letabc=UnsafePointer(array1).withMemoryReb

swift - 在 Swift 3 (libxml2) 中将 String 转换为 UnsafePointer<xmlChar> 的更快捷方式

我正在为libxml2开发Swift3包装器C库。有两种方便的方法可以转换String至UnsafePointer反之亦然。在libxml2xmlChar声明为unsignedchar.UnsafePointer至String不复杂funcstringFrom(xmlchar:UnsafePointer)->String{letstring=xmlchar.withMemoryRebound(to:CChar.self,capacity:1){returnString(validatingUTF8:$0)}returnstring??""}String至UnsafePointer例如,

swift - 来自 CGAffineTransform 的 UnsafePointer<CGAffineTransform>

我正在尝试在Swift中创建CGPath。我正在使用CGPathCreateWithRect(rect,transformPointer).我怎样才能得到UnsafePointer来自CGAffineTransform?我试过这个:lettransform:CGAffineTransform=CGAffineTransformIdentitylettransformPointer:UnsafePointer=UnsafePointer(transform)我也试过这个:lettransform:CGAffineTransform=CGAffineTransformIdentitylet

swift - 如何在 Swift 中正确初始化 UnsafePointer?

我正在尝试使用CTFontCreatePathForGlyph(font:CTFont?,glyph:CGGlyph,transform:CConstPointer):letmyFont=CTFontCreateWithName("Helvetica",12,nil)letmyGlyph=CTFontGetGlyphWithName(myFont,"a")letmyTransform=CGAffineTransformIdentity但我如何正确传递myTransform至CTFontCreatePathForGlyph?我试过创建一个myTransformPointer像这样传递给函

ios - swift 在不同的 UnsafePointer<T> 之间进行转换

我正在尝试使用swift中的C-Api。例如,C-Api是这样的:voiddoThingsOnRawData(constunsignedchar*data);Swift将其转换为:voiddoThingsOnRawData(UnsafePointer);现在我想将数据从NSData传递给函数。NSData.byte返回类型:UnsafePointer这是某种void*类型吗?至少swift不会接受它作为UnsafePointer.我该怎么做才能转换这个? 最佳答案 structUnsafePointer有一个构造函数///Conve

将具有长度的 UnsafePointer 转换为 Swift 数组类型

我正在寻找在Swift中实现合理的C互操作性的最简单方法,我当前的block正在转换UnsafePointer(这是一个constchar*),变成一个[Int8]数组。目前,我有一个朴素的算法,可以采用UnsafePointer和一些字节并将其逐个元素转换为数组:funcconvert(length:Int,data:UnsafePointer){letbuffer=UnsafeBufferPointer(start:data,count:length);vararr:[Int8]=[Int8]()for(vari=0;i循环本身可以通过使用arr.reserveCapacity(l