Swift相当于Objective-C FourCharCode单引号文字(例如’TEXT’)

前端之家收集整理的这篇文章主要介绍了Swift相当于Objective-C FourCharCode单引号文字(例如’TEXT’)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试在 Swift中复制一些Objective C cocoa.一切都很好,直到我遇到以下情况:
  1. // Set a new type and creator:
  2. unsigned long type = 'TEXT';
  3. unsigned long creator = 'pdos';

如何从这样的单引号字符文字创建Int64(或正确的Swift等价物)?

类型:

  1. public typealias AEKeyword = FourCharCode
  2. public typealias OSType = FourCharCode
  3. public typealias FourCharCode = UInt32
我在我的Cocoa Scripting应用程序中使用它,它认为字符> 0x80正确
  1. func OSTypeFrom(string : String) -> UInt {
  2. var result : UInt = 0
  3. if let data = string.dataUsingEncoding(NSMacOSRomanStringEncoding) {
  4. let bytes = UnsafePointer<UInt8>(data.bytes)
  5. for i in 0..<data.length {
  6. result = result << 8 + UInt(bytes[i])
  7. }
  8. }
  9. return result
  10. }

编辑:

另外

  1. func fourCharCodeFrom(string : String) -> FourCharCode
  2. {
  3. assert(string.count == 4,"String length must be 4")
  4. var result : FourCharCode = 0
  5. for char in string.utf16 {
  6. result = (result << 8) + FourCharCode(char)
  7. }
  8. return result
  9. }

或者仍然很快

  1. func fourCharCode(from string : String) -> FourCharCode
  2. {
  3. return string.utf16.reduce(0,{$0 << 8 + FourCharCode($1)})
  4. }

猜你在找的Swift相关文章