Comment voulez-vous lire des données à partir d'un fichier texte dans Swift 3 (XCode 8)

d'abord, je voudrais commencer avec ma situation actuelle:

1) Situation Actuelle:

J'ai un fichier texte (de données.rtf) j'ai aussi essayé et je suis prêt à les utiliser .plist ou tout autre format d'obtenir un résultat.

J'ai essayé de lire les données à partir de ce fichier, et de montrer que les données sur l'Étiquette.

J'ai essayé de pré-renseigner le fichier, le fait d'enregistrer le fichier avant de le lire, et même simplement de vérifier que le fichier existe, mais à chaque tentative a échoué.

Pour 3 jours, j'ai cherché diverses instructions et des tutoriels sur la façon de faire ce qui est généralement assez simple fonctionnalité. Je l'ai déjà fait en Objective-C, mais je suis nouvelle Swift et malheureusement avoir à l'utiliser pour cette évaluation et je suis coincé.

2) Obstacles:

Chaque exemple, j'ai regardé jusqu'à présent, a été rejetée par XCode comme erronée, l'éther pour utiliser des termes qui ne sont plus acceptés comme:

let path = (NSTemporaryDirectory() as NSString).stringByAppendingPathComponent("image.png")

Ou avec des lignes de télévision ne fonctionne pas du tout comme:

let client = arrayClients[0]
    DisplayLabel.text = "\(client.ob("FirstName")!) \(client.objectForKey("LastName")!)"
    //DisplayLabel.text = client.  <- this part doesn't work

Tous les cas, les deux extrémités avec un code qui est trop hors de date, ou s'il est trop massacrés après la mise à jour pour le remplacement recommandé de toujours travailler. Le seul cas où j'ai obtenu le code à même de construire (en supprimant les erreurs de syntaxe) a des erreurs de logiques où les résultats ne sont rien, ou il se bloque, le plus souvent avec:

"NSCocoaErrorDomain Code = 260 "Le fichier de données".rtf" n'a pas pu être ouvert car il n'y a pas de tel fichier."
"Aucun fichier ou répertoire"

Je pense que, même si le fichier existe dans mon projet XCode, il est recherché dans le simulateur d'iPhone, et pour quelque raison il n'y existent pas. Ce n'est qu'une théorie, et je n'ai aucune idée de comment résoudre ce problème. Je n'ai jamais rencontré ce problème lorsque l'on fait la même chose en Objective-C, où, si j'ai fait un fichier et le chemin d'accès, il a travaillé, mais pour Swift, il refuse tout simplement de

3) Le Code:

À ce point, je suis plus intéressé par un code qui fonctionne, que d'un correctif à la mienne qui n'a pas, comme la mienne est devenue tellement massacrés dans mes tentatives pour résoudre ce (ainsi que d'autres XCode mise à jour des questions connexes) qu'il est à peine adaptée à son but, même si je contourner cet obstacle, mais au cas où il permet, je vais vous donner "un peu" de l'différentes tentatives j'ai tiré

//Le "fichier non trouvé" code :

let path = (NSTemporaryDirectory() as NSString).appendingPathComponent("data.rtf")

    do {
        //Get the contents
        let contents = try NSString(contentsOfFile: path, encoding: String.Encoding.utf8.rawValue)
        print(contents)
        DisplayLabel.text = contents as String?
    }
    catch let error as NSError {
        print("Ooops! let path = (NSTemp... did not work: \(error)")
    }

//Une autre variante avec le même résultat:

let file: FileHandle? = FileHandle(forReadingAtPath: "DataFile.plist")

    if file != nil {
        //Read all the data
        let data = file?.readDataToEndOfFile()

        //Close the file
        file?.closeFile()

        //Convert our data to string
        let str = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
        print(str!)
        DisplayLabel.text = str as String?
    }
    else {
        print("Ooops! Something went wrong!")
    }

//Une version où la version finale de la ligne des lancers (syntaxe -> Edit> Fatale erreur, j'ai été incapable de résoudre:

var dictClients = [String:String]()
    var arrayClients = NSMutableArray()


    let path = Bundle.main.path(forResource: "data", ofType: "rtf")

    let filemgr = FileManager.default

    if filemgr.fileExists(atPath: path!) {
        do {
            let fullText = try String(contentsOfFile: path!, encoding: String.Encoding.utf8)

            let readings = fullText.components(separatedBy: "\n") as [String]

            for i in 1..<readings.count {
                let clientData = readings[i].components(separatedBy: "\t")

                dictClients["FirstName"] = "\(clientData)"

                arrayClients.add(dictClients)
            }
        } catch {
            print("error: \(error)")
        }
    }

    let client = arrayClients[0]
    //DisplayLabel.text = client.
    //DisplayLabel.text = "\(client.ob("FirstName")!) \(client.objectForKey("LastName")!)"

//-Edit - j'ai été en mesure de corriger l'erreur de Syntaxe avec le ci-dessous, mais une erreur de logique au lieu

DisplayLabel.text = "\((client as AnyObject).object(forKey:"FirstName")!) \((client as AnyObject).object(forKey:"LastName")!)"

-- Modifier une Nouvelle erreur --

"erreur fatale: de façon inattendue trouvé nulle, tandis que d'ôter une valeur Facultative"

J'Espère que cela a en quelque sorte été clair, et je vous remercie de toute l'aide pour résoudre le problème. J'ai travaillé sur cette application depuis jeudi, et cette question en particulier, depuis dimanche, avec très peu de sommeil ou de repos, encore plus de l'ordinateur a du mal à continuer à fonctionner sous la tension et mon intérêt n'est pas aussi forte et je ne peut pas être aussi cohérentes que je pense, donc pardonner les erreurs évidentes que j'ai fait ou une mauvaise communication je suis peut-être en utilisant.

Merci d'avance

pouvez-vous fournir votre fichier de données ?
Je ne sais pas comment, c'est simplement un fichier de test de données.rtf content = vérifier pas d'autres informations pour le moment, je l'ai enlevé tous lors du test, pour voir si je pouvais lire qu'un seul mot, cependant, à l'instant, quand je l'ai lu, je reçois ["check"] au lieu de simplement "check" en essayant de le modifier maintenant, mais j'ai peut-être demander de l'aide à nouveau bientôt

OriginalL'auteur Daniel No Kuroikaze | 2017-01-24