私はいくつかの検索を行いましたが、まだエラーを解決する方法を見つけることができません。 基本的に私はJsonファイルからブックリストを読んで、それを更新しています。読み込み部分は正常ですが、更新しようとするとエラー(「タイプが「AnyObject ?!」の不変式に代入できません」)が発生します。タイプ 'AnyObject ?!'の不変式に割り当てることはできません。
var url = NSBundle.mainBundle().URLForResource("Book", withExtension: "json")
var data = NSData(contentsOfURL: url!)
var booklist = try! NSJSONSerialization.JSONObjectWithData(data!, options: []) as! NSMutableArray
for boo in booklist {
if (boo["name"] as! String) == "BookB" {
print (boo["isRead"]) //see Console Output
boo["isRead"] = "true" //this gets error "Cannot assign to immutable expression of type ' AnyObject?!'"
}
Book.jsonは以下の通りであるJSONファイル:
[
{"name":"BookA","auth":"AAA","isRead":"false",},
{"name":"BookB","auth":"BBB","isRead":"false",},
{"name":"BookC","auth":"CCC","isRead":"false",},
]
ブックリスト、値、コンソール出力を参照して期待している:
(
{
name = BookA;
auth = AAA;
isRead = false;
},
{
name = BookB;
auth = BBB;
isRead = false;
},
{
name = BookC;
auth = CCC;
isRead = false;
}
)
とprint (boo["isRead"])
ため、コンソール結果はOptional(false)
です、 どちらが正しい。
ブックリストはすでにNSMutableArrayのである、と私はまた
var booklist = try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSMutableArray
として変更しようとしましたが、それは解決しません。
var mutableObjects = booklist
for var boo in mutableObjects {
if (boo["name"] as! String) == "BookB" {
print (boo["isRead"]) //see Console Output
boo["isRead"] = "true" //this gets error "Cannot assign to immutable expression of type ' AnyObject?!'"
}
誰もが、この場合にBookBためのブックリストにisReadを更新する方法を助言でした:
もまた同じエラーが出るの下に変更し、Swift: Cannot assign to immutable expression of type 'AnyObject?!'に言及しました。または、Book.jsonファイルの更新方法をさらに改善できます。
ありがとうございます。あなたのケースでは
可能な複製と
boo
のタイプに関するヒント与える[スウィフト:タイプの不変式に割り当てることができません「ANYOBJECT ?!」](http://stackoverflow.com/質問/ 32093692 /即時に割り当てられない不変式の任意の式の任意の式) – Lasseその問題の解決策は私のためには機能しません... – Adaoli
あなたは正しいです。私は働く答え – Lasse