2014-06-08 5 views

Antwort

26

Die Swift Language Reference defines einige "special Literale", die dieses Verhalten bieten:

Literal  Type  Value 

#file   String The name of the file in which it appears. 
#line   Int  The line number on which it appears. 
#column  Int  The column number in which it begins. 
#function  String The name of the declaration in which it appears. 
+3

Diese nicht mehr aktualisiert wird. Swift 3 aktualisiert diese Konstante. @hfossli Antwort ist jetzt die richtige Antwort. – jollyr0ger

+1

@ jollyr0ger das ist, was die Schaltfläche "bearbeiten" ist: D – Fogmeister

91
Literal  Type  Value 

#file   String The name of the file in which it appears. 
#line   Int  The line number on which it appears. 
#column  Int  The column number in which it begins. 
#function  String The name of the declaration in which it appears. 

Beispiel

print("Function: \(#function), line: \(#line)") 

mit Standardwerten in den Parametern Sie auch eine Funktion

public func track(_ message: String, file: String = #file, function: String = #function, line: Int = #line) { 
    print("\(message) called from \(function) \(file):\(line)") 
} 
erstellen

die


In Swift 2.1 und unter https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Expressions.html#//apple_ref/doc/uid/TP40014097-CH32-ID390

für weitere Informationen wie diese

track("enters app") 

Siehe Dokumentation verwendet werden:

Literal  Type  Value 

__FILE__  String The name of the file in which it appears. 
__LINE__  Int  The line number on which it appears. 
__COLUMN__  Int  The column number in which it begins. 
__FUNCTION__ String The name of the declaration in which it appears. 

Beispiel

print("Function: \(__FUNCTION__), line: \(__LINE__)") 
+3

Swift 2.2 Änderungen sind jetzt veröffentlicht und sollte die neue genehmigte Antwort sein :) – Bersaelor

+1

'#' passiert in 2.2. –

+0

#namespace ist kein Bezeichner. – c0ming

0

Sie können auf diese Weise nur den Dateinamen erhalten.

let errorLocation = (#file as NSString).lastPathComponent 
print(errorLocation) 

oder

let errorLocation = filePath.components(separatedBy: "/").last! 
print(errorLocation) 

Ausgang

ViewController.swift 
Verwandte Themen