2016-09-05 1 views
-2

Je veux convertir mon image enregistrée dans CoreData en chaîne pour que je puisse l'utiliser (je ne veux pas le convertir directement en une image que j'ai besoin d'envoyer l'image/chaîne à la page suivante aussi).convertir un nsdata en chaîne dans swift

Voici mon code que je suis en train mais obtenir BAD_EXC_Result au cours de l'exécution comme il a trouvé la valeur nil mais tableImageArray[indexPath.row] a la valeur que je passe à if déclaration:

if tableImageArray[indexPath.row] != "" {     
    var _Image:String = String(data: tableImageArray[indexPath.row], encoding:NSUTF8StringEncoding)! 
    //(NSString(data:tableImageArray[indexPath.row], encoding:NSUTF8StringEncoding)) as String! 
    print(_Image) 
} 
+0

Comment avez-vous obtenu le 'NSData' dans le' tableImageArray'? – Sweeper

+2

Tout cela ne semble pas très logique, Si le tableau contient des objets NSData, la comparaison avec String n'a aucun sens. Essayer de créer une chaîne avec des données d'image n'a aucun sens non plus. Vous dites que les données ont un encodage UTF8, mais ce n'est pas le cas - ce sont des données d'image. – Eiko

Répondre

0

Ceci est juste ma conjecture.

A en juger par le nom du tableau, tableImageArray sonne comme un tableau d'images, pas de chaînes. Donc je suppose que vous essayez de convertir une image en NSData, et de convertir cette NSData en une chaîne.

Cependant, cela ne fonctionne pas. Tout comme la conversion directe d'un UIImage en un String ne fonctionne pas.

Je suppose que vous avez une ou l'autre de ces intentions:

1) vous voulez base64 encoder l'image à une chaîne. Pour ce faire, vous appelez simplement base64EncodedStringWithOptions([]) sur les données. 2) vous voulez identifier et imprimer une chaîne contenue dans UIImage. Pour cela, vous devriez probablement utiliser des bibliothèques OCR. Juste Google les!

0

Essayez:

if let array = tableImageArray {     
    var _Image:String = String(data: array[indexPath.row], encoding:NSUTF8StringEncoding)! 
    //(NSString(data:array[indexPath.row], encoding:NSUTF8StringEncoding)) as String! 
    print(_Image)   
} 
+0

J'utilise la même ligne de code .. entrant à l'intérieur si la condition n'est pas mon problème. tableimagearray [indexpath.row] a des données mais quand je mets var _Image: String = String (données: tableau [indexPath.row], encodage: NSUTF8StringEncoding)! cette ligne a trouvé zéro –

0

Vous ne pouvez pas convertir les données d'image directement en String via le codage UTF8.

Le seulement façon de convertir NSData en String quel que soit le contenu est le codage base64.

let imageData = tableImageArray[indexPath.row] 
let image = imageData.base64EncodedStringWithOptions([])