ios - [__NSCFArray insertObject :atIndex:]: mutating method sent to immutable object'

标签 ios nsmutablearray immutability mutable swift2.1

IDK 发生了什么。我只是在我的数组中添加一个值。

这是代码:

dispatch_async(dispatch_get_main_queue(), { () -> Void in
    let requestedURL = NSString(string: url_to_req)
    print(requestedURL.substringFromIndex(36))
    if requestedURL.substringFromIndex(36) == "forum"{
        returnValue = (parseJSON["_id"] as? String)!
        print("Here is id of posted question: '\(returnValue)'")
        if (NSUserDefaults.standardUserDefaults().objectForKey("PostedQuesIds") != nil){
            self.postedQuestionIds = NSUserDefaults.standardUserDefaults().objectForKey("PostedQuesIds") as? NSMutableArray
        }

        print("Total count of array '\(self.postedQuestionIds)")

        self.postedQuestionIds?.addObject(returnValue)// overhere my app gets a crash
        // self.postedQuestionIds = NSMutableArray(object: returnValue)
        NSUserDefaults.standardUserDefaults().setObject(self.postedQuestionIds, forKey: "PostedQuesIds")
        NSUserDefaults.standardUserDefaults().synchronize()                            
    }
})

对于这些疑问,我还尝试了下面的代码,就像我忘记了关于 nsmutablearray 的事情一样
var name = "abc"
let firstname = "dd"
let lastname = "zz"

let arr:NSMutableArray? = NSMutableArray()

arr?.addObject(name)
name = "ABC"

arr?.removeObjectAtIndex(0)
arr?.addObject(firstname)
arr?.addObject(lastname)
arr?.addObject(name)

print("Here is complete array '\(arr)'")

这工作正常。请帮助我,看起来我丢失了一些东西并且无法找到它们。您的努力将不胜感激。

最佳答案

看来,如果您从 NSUserDefaults 检索数组,它就会变成不可变的。试试这个。

let array = NSUserDefaults.standardUserDefaults().objectForKey("PostedQuesIds") as! NSArray
self.postedQuestionIds = NSMutableArray(array: array)

关于ios - [__NSCFArray insertObject :atIndex:]: mutating method sent to immutable object',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34013122/

相关文章:

ios - 有没有办法确保 iPad 模拟器横向屏幕截图正确旋转?

ios - 去除 64 位 SDK 的警告

ios - 如何在运行时动态地在 nsmutable 数组中添加元素?

java - 建立非最终领域之前发生的最便宜方法

rust - 我如何安全地使用可变借用的对象?

ios - 替换NSDictionary中的键值

objective-c - 核心数据和 10 000 个音频文件

objective-c - 将 100 个 NSMutableArray 组合成一个可控对象

ios - 从 NSArray 中删除重复的键值

java - Java String 类内部是如何工作的?