Je suis n tutoriel de base sur la construction d'une application iOS simple dans Swift.
Il est écrit en Swift 2.x, et je travaille avec XCode 8 Beta et Swift 3.
Le didacticiel suggère d'utiliser NSFileManager
pour rechercher un répertoire de données. Les noms de classe ont changé, donc la correction automatique Swift 3 ressemble à ceci:
static let DocumentsDirectory = FileManager().urlsForDirectory(.documentDirectory, inDomains:.userDomainMask).first!
static let ArchiveURL = DocumentsDirectory.URLByAppendingPathComponent("meals")
Cependant, Xcode se plaint maintenant que
Value of type 'URL' has no member 'URLByAddingPathComponent'
Je n'arrive pas à savoir comment s'appelle la méthode maintenant.
NSURL Class Reference ne contient aucune indication sur la façon de l'adresser à partir de Swift 3
Quel est le nouveau nom de la méthode?
Où dois-je aller pour trouver une référence de classe complète pour Swift 3 (ou, l'interface Swift 3 à la bibliothèque URL
classe est définie dans - je ne comprends toujours pas complètement la nomenclature) donc je peux les rechercher moi-même à l'avenir?
À partir de Xcode 8 beta 4, il est nommé appendingPathComponent(_:)
, et ne lance pas.
static let archiveURL = documentsDirectory.appendingPathComponent("meals")
Aussi comme Leo Dabus le souligne dans les commentaires , votre propriété documentsDirectory
devra être modifiée pour utiliser urls(for:in:)
en beta 4:
static let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
(Notez que j'ai fait vos noms de propriété lowerCamelCase
, conformément aux directives de conception de l'API Swift . Je recommanderais également d'utiliser FileManager.default
, Plutôt que de créer une nouvelle instance .)
Vous pouvez jeter un oeil à le dernier guide de référence d'API d'Apple pour voir les changements de nom d'API qui ont eu lieu dans Swift 3.
Il a maintenant changé en appendingPathComponent(_:)
et il lance, vous devez donc l'envelopper dans do - catch block
do {
let archiveURL = try documentsDirectory?.appendingPathComponent("meals")
} catch {
print(error)
}
Mise à jour
Selon Xcode 8 beta 4, la appendingpathcomponent(_:)
ne génère pas d'erreur.
Pour des informations pertinentes, voir réponse par @ Hamish
func appendingPathComponent(String)
=> Renvoie une nouvelle URL créée en ajoutant un composant de chemin à l'URL d'origine.
static let archiveURL = documentsDirectory?.appendingPathComponent("meals")
S'il s'agit d'un répertoire:
func appendingPathComponent(String, isDirectory: Bool)
=> Renvoie une nouvelle URL créée en ajoutant un composant de chemin à l'URL d'origine, ainsi qu'une barre oblique si le composant est désigné comme un répertoire.
static let archiveURL = documentsDirectory?.appendingPathComponent("meals", isDirectory: true)