2017-08-26 3 views
0

Wenn ich mein Swift-Projekt für Mac kompiliere, kompiliert es sich gut, aber wenn ich denselben Code in Ubuntu 16.04 kompiliere, erhalte ich folgenden Fehler.Wert vom Typ 'Scanner' hat kein Mitglied 'scanHexInt32'

value of type 'Scanner' has no member 'scanHexInt32' 
     if Scanner(string: self).scanHexInt32(&value) { 
      ^~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~ 
Foundation.Scanner:8:17: note: did you mean 'scanHexInt'? 
    public func scanHexInt(_ result: UnsafeMutablePointer<UInt32>) -> Bool 

Was wäre der Grund?

Antwort

0

braucht es verschiedene Flaggen:

import Foundation 

    public extension String { 
     public func scanHex() -> UInt32? { 
     var value = UInt32(0) 
     #if os(Linux) 
     if Scanner(string: self).scanHexInt(&value) { 
      return value 
     } else { 
      return nil 
     } 
     #else 
     if Scanner(string: self).scanHexInt32(&value) { 
      return value 
     } else { 
      return nil 
     } 
     #endif 
     } 
    } 

    if let x = "0x100".scanHex() { 
     print("scanned:", x) 
    } else { 
     print("scan failed") 
    } 

Diese main.swift auf Mac/Linux getestet.

Verwandte Themen