线程1:为NSMutableArray调用“addObjectsFromArray”方法时出现EXC_BAD_INSTRUCTION错误

时间:2016-01-21 04:39:01

标签: ios swift nsmutablearray nsobject

我创建了一个程序,根据自定义对象输入函数计算某些国家/地区的边界。此函数返回自定义对象的数组。尝试将此数组添加到NSMutableArray时,我不断收到此错误。该错误称为“线程1:EXC_BAD_INSTRUCTION(代码= EXC_1386_INVOP,子代码= 0x0)”。

这是我的添加代码:

func relate(X : develop) -> Array<develop>{

var A : [develop] = []



for (_, value) in groups {

    for y in value {

        if y.name == X.name {

            for i in value {

                if i.name != X.name {
                    A.append(i)
                }

            }

        }



        }
    }
    return A
 }

//Groups
var groups = [

    "one": [Afghanistan]

]

这是关联方法和组字典:

    class develop : NSObject, NSCoding {

//Shared

    var power : Int!
    var name : String!
    var image : UIImage!
    var flag : UIImage!
    var militaryName : String!

//Military

    var experience : Int!
    var OATC : Int!
    var navy : Int!
    var airforce : Int!
    var artillery : Int!


//Geography

    var borders : NSMutableArray!
    var cities : NSMutableArray!
    //Biomes
    var biom : NSMutableArray!

    var continent : String!
    var NSEW : String!


    //Encoding Section


required convenience init(coder decoder: NSCoder) {
    self.init()
    //shared
    self.power = decoder.decodeObjectForKey("power") as! Int
    self.name = decoder.decodeObjectForKey("name") as! String
    self.image = decoder.decodeObjectForKey("image") as! UIImage
    self.flag = decoder.decodeObjectForKey("flag") as! UIImage
    self.militaryName = decoder.decodeObjectForKey("militaryName") as! String

    //Military
    self.experience = decoder.decodeObjectForKey("experience") as! Int
    self.OATC = decoder.decodeObjectForKey("OATC") as! Int
    self.navy = decoder.decodeObjectForKey("navy") as! Int
    self.airforce = decoder.decodeObjectForKey("airforce") as! Int
    self.artillery = decoder.decodeObjectForKey("artillery") as! Int

    //Geography
    self.borders = decoder.decodeObjectForKey("borders") as! NSMutableArray
    self.cities = decoder.decodeObjectForKey("cities") as! NSMutableArray

    self.continent = decoder.decodeObjectForKey("continent") as! String
    self.NSEW = decoder.decodeObjectForKey("NSEW") as! String

}

convenience init(
    power: Int, name: String, image: UIImage, flag: UIImage,
    relations: NSMutableArray, mName: String, experience: Int,
    OATC: Int, navy: Int, airforce: Int, artillery: Int,
    borders: NSMutableArray, cities: NSMutableArray,
    biom: NSMutableArray, continent: String, NSEW: String )
{
    self.init()
    //shared
    self.power = power
    self.name = name
    self.image = image
    self.flag = flag
    self.militaryName = mName
    //military
    self.experience = experience
    self.OATC = OATC
    self.navy = navy
    self.airforce = airforce
    self.artillery = artillery
    //geography
    self.borders = borders
    self.cities = cities
    self.biom = biom
    self.continent = continent
    self.NSEW = NSEW
}

func encodeWithCoder(coder: NSCoder) {
    //Shared
    if let power = power { coder.encodeObject(power, forKey: "power") }
    if let name = name { coder.encodeObject(name, forKey: "name") }
    if let image = image { coder.encodeObject(image, forKey: "image") }
    if let flag = flag { coder.encodeObject(flag, forKey: "flag") }
    if let militaryName = militaryName { coder.encodeObject(militaryName, forKey: "militaryName") }
    //Military
    if let experience = experience { coder.encodeObject(experience, forKey: "experience") }
    if let OATC = OATC { coder.encodeObject(OATC, forKey: "OATC") }
    if let navy = navy { coder.encodeObject(navy, forKey: "navy") }
    if let airforce = airforce { coder.encodeObject(airforce, forKey: "airforce") }
    if let artillery = artillery { coder.encodeObject(artillery, forKey: "artillery") }
    //geography
    if let borders = borders { coder.encodeObject(borders, forKey: "borders") }
    if let cities = cities { coder.encodeObject(cities, forKey: "cities") }
    if let biom = biom { coder.encodeObject(biom, forKey: "biom") }
    if let continent = continent { coder.encodeObject(continent, forKey: "continent") }
    if let NSEW = NSEW { coder.encodeObject(NSEW, forKey: "NSEW") }
}
}

以下是开发类:

{{1}}

“阿富汗”是发展的子类

0 个答案:

没有答案