写这篇日记是为了记录下我遇见的一些需要类型转换的地方 的类型转换
swift 3 中学习别人代码的时候遇到的一个c 的删除函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| unlink () 函数类似功能swift 函数 try? FileManager.default.removeItem(atPath: pathToMovie) NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Movie.m4v"]; unlink([path UTF8String]); unlink(UnsafePointer<Int8>!) String 没看到转成这种类型的, 无奈 还是先转了NSString unlink((path as NSString).utf8String!) let string = fileURL.path.cString(using: String.Encoding.utf8) unlink(string)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| 在Swift 3中,String有两个初始化器 public init(cString: UnsafePointer<CChar>) public init(cString: UnsafePointer<UInt8>) 因此它可以从有符号和无符号字符的(空终止)序列创建。所以 let s = String(cString: yourCharPointer) 应该只是工作。 String 有另一个初始化 public init?(validatingUTF8 cString: UnsafePointer<CChar>) 其在形式不良的UTF-8序列上失败,而不是由替换字符替换它们。这个init方法没有对应的无符号字符。 以现有的实现在CString.swift为例,它不是太难添加此作为扩展: extension String { public init?(validatingUTF8 cString: UnsafePointer<UInt8>) { guard let (s, _) = String.decodeCString(cString, as: UTF8.self, repairingInvalidCodeUnits: false) else { return nil } self = s } } 接着 if let s = String(validatingUTF8: yourCharPointer) { print(s) } else { print("invalid UTF-8") } 也与带符号和无符号字符的(空终止)序列一起工作。
|
一个 小数点保留问题, 最后转成string, 小数点问题
1 2 3 4
| let sizeGB = 1.2234 let str = String(format: "%0.0f", sizeGB) print(str)
|
swift string 转 float 等 现在只发现这个最简单 先转 NSString
1 2 3 4 5
| var s1 = s as NSString s1.integerValue s1.doubleValue s1.floatValue
|