2016-11-10 112 views
0

我有一个方法,从JSON初始化我的类对象。这样的方法:添加数组对象不初始化

func getList (dic : Array<[String:AnyObject]>) -> Array<Dog> { 
    let dogs : NSMutableArray = NSMutableArray() 
    for myDic in dic { 
     let dog = Dog.init(dog: myDic) 
     dogs.addObject(dog) 
    } 
    return NSArray(dogs) as! Array<Dog> 
} 

而且我可以在没有问题的情况下在tableview上显示它。但现在我想为列表分页。如果我再次运行getList方法,它将是init新对象并替换我的旧对象。我如何添加一个新的对象到现有。我不想用相同的属性创建单独的对象。

+1

只是用斯威夫特阵列,在Swift中不再需要基础设施集合。使用一个数组作为输入,然后使用一个NSMutableArray然后再次转换为数组是没有意义的。 – Moritz

回答

1

您需要添加一个您将追加到的成员变量。所以:

var dogs: [Dog] = [] 

然后调用getList这样的:

dogs += getList(dic: myDic) 

顺便说一句,你可以让你的getList方法要简单得多,就像这样:

func getList(dic: [[String: AnyObject]]) -> [Dog] { 
    return dic.map(Dog.init) 
} 
+0

很好的答案。但是可能'AnyObject'应该成为'Any'(为了包含'String(s)','Int(s)'和其他结构而不需要手工投射) –

+0

AnyObject'在原始问题中定义。我们不知道'Dog'初始值设定项是否需要一个AnyObject类型的字典。 – ganzogo

+0

但我同意你*可能*正确;-) – ganzogo