2017-06-28 7 views
-3

jsonデータをダウンロードしてフィルタリングしようとしています。 jsonデータをフィルタリングした後、うまく機能しているフィルタリングされたデータを印刷しました。私は、配列の文字列型にそのデータを追加しようとするが、そのクラッシュやエラーがあります: -タイプ '__NSArrayI'(0x106d27d88)の値を 'NSString'(0x107be3c40)にキャストできません。

は、型の値をキャストすることができませんでした「__NSArrayI」(0x106d27d88「)NSStringの」 (0x107be3c40)へ。

code sample and output

+3

スクリーンショットの代わりにコードを投稿してください。 –

+3

また、あなたの 'productName'は実際には配列です。すべての要素を持っているので、Stringに変換することはできません。 –

+1

+1 @ ShamasSのコメントに+1。またSwift 3を使い、NSArray、NSString、その他のFoundation(Objective-C)のものを取り除き、Swiftのものを好む(NSの接頭辞なしではほとんど同じです)。投稿したときに – Larme

答えて

4

は、このような文字列の配列としてその商品名をキャスト。 [文字列]

let productName = jsonObj?.value(forKey: "name") as! [String]

次に従うこれはリンク

1)https://www.hackingwithswift.com/example-code/arrays/how-to-join-an-array-of-strings-into-a-single-string

2)How do I convert a Swift Array to a String?

let productName1 = ["1", "2", "3"] 

var arrayForName1 = [String]() 

arrayForName1 = ["name"] 

let str = productName1.joined(separator: "") 
// ["name", "123"] 

// or 
let str1 = productName1.joined(separator: ", ") 
// ["name", "1, 2, 3"] 

arrayForName1.append(str) 
0

あなたproductNameアレイでありますあなたの問題を引き起こすようにStringにキャストしています。

  1. あなたarrayForName1のアレイに追加するあなたのproductName配列を検証し、実際の文字列の正しいインデックスを見つける:あなたはこのベースを修正するには、2つのオプションがあります。だからあなたのproductNameが文字列の配列がある場合は、あなたのコードは

    arrayForName1.append(productName[0])

  2. のようになりますと、あなたは、単にこのコード

    arrayForName1 += productName

0
を使用し、 arrayForName1にそれらのすべてを追加したいです

Into Your json data配列には任意のパラメータを指定できます(Number = ["1"、 "2"、 "3"))

var Number1:String? = "" 
var NumberList:[String] = [] 

if let Number_from = anItem["Number"] as? String { 
    self.Number1 = Number_from 
    self.NumberList.append(self.Number1!) 
} else { 
    self.NumberList.append("Not Available") 
} 
関連する問題