Я сделал поиск, но до сих пор не могу понять, как решить эту ошибку. В основном я читаю список книг из файла 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?!'"
}
Json файл Book.json, как показано ниже:
[
{"name":"BookA","auth":"AAA","isRead":"false",},
{"name":"BookB","auth":"BBB","isRead":"false",},
{"name":"BookC","auth":"CCC","isRead":"false",},
]
Booklist имеет ожидаемые значения, см Консольный вывод:
(
{
name = BookA;
auth = AAA;
isRead = false;
},
{
name = BookB;
auth = BBB;
isRead = false;
},
{
name = BookC;
auth = CCC;
isRead = false;
}
)
и print (boo["isRead"])
, результат консоли Optional(false)
, что правильно.
Booklist уже NSMutableArray, и я также пытался изменить, как
var booklist = try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSMutableArray
, но это не помогает.
Также упоминается Swift: Cannot assign to immutable expression of type 'AnyObject?!', изменяя ниже также получить ту же ошибку:
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?!'"
}
Может кто-нибудь посоветовать, как обновить isRead в Booklist для BookB в этом случае. Или даже лучше, как обновить файл Book.json.
спасибо.
Возможного дубликатом [Swift: Невозможно присвоить неизменное выражение типа «AnyObject ?!»] (http://stackoverflow.com/ вопросы/32093692/swift-can not-assign-to-immutable-expression-of-type-anyobject) – Lasse
решение в этом вопросе не работает для меня ... – Adaoli
Вы правы. Я опубликовал рабочий ответ – Lasse