If the contents of the array are value objects, as the constant strings are in your example, then simply return it; Swift assignments have copy behaviour. This is explained at the end of the Classes And Structures Apple documentation:
Assignment and Copy Behavior for Strings, Arrays, and Dictionaries
In Swift, many basic data types such as String, Array, and Dictionary are implemented as structures. This means that data such as strings, arrays, and dictionaries are copied when they are assigned to a new constant or variable, or when they are passed to a function or method.
This behavior is different from Foundation: NSString, NSArray, and NSDictionary are implemented as classes, not structures. Strings, arrays, and dictionaries in Foundation are always assigned and passed around as a reference to an existing instance, rather than as a copy.
NOTE: The description above refers to the “copying” of strings, arrays, and dictionaries. The behavior you see in your code will always be as if a copy took place. However, Swift only performs an actual copy behind the scenes when it is absolutely necessary to do so. Swift manages all value copying to ensure optimal performance, and you should not avoid assignment to try to preempt this optimization.
If your array contains reference objects, and you want to return a deep copy of them, that's a little trickier; here's a discussion about how to handle that. Although the correct way to handle that would be to redo your code to use value types.