将对象数组转换为数组对象

时间:2015-02-24 09:17:18

标签: ios arrays json swift

我有一个不同类型阵列的课程,让我们说他们都填充了相同的数量。

public class CoreLocationMap {

var type: [String] = []
var location: [Int] = []
var groupName: [NSString] = []
var x: [Float] = []

init() {}

}

我想要类似JSON对象:

var jsonObject = ({type = myString; location = 123; groupName = anotherString; x = 0.123}, {type = myString; location = 123; groupName = anotherString; x = 0.123}, ...)

它不一定要有jsonObject,但我想将我的变量封装在逻辑组中,所以

type
location
groupName
x

应该创建一个struct / object / whateever ^^。 如果我稍后使用例如某个位置,我想引用该组中的其他变量。 我也很高兴其他解决方案。如果您需要更多详细信息,请告诉我。

谢谢!

3 个答案:

答案 0 :(得分:2)

正如您所建议的那样,您可以使用结构来封装数据:

struct LocationData {
   var type: String
   var location: Int
   var groupName: String
   var x: Float
}

并在您的班级中声明一个数组:

var locationsData = Array<LocationData>()

添加添加元素的功能:

func addLocationData(type: String, location: Int, groupName: String, x:Float) {
   // Add additional safety/limitation checks
   locationsData.append(LocationData(type: type, location: location, groupName: groupName, x: x) // structs have an implicit init method
}

答案 1 :(得分:2)

你可以创建模型calss让我们说locationModel 喜欢

  calss locationModel{
     var type:String
     var location : Int
     var groupName : String
     var x: Float

  // you can create Init method to init() model properties 
  // you can create custom method to fill values of model calss

  /* you create custom method that accept array as argument create 
    this class (locationModel) type of object in function load data
    from array to modelobject add modelobject in array and return
    this array.*/
 }

现在您可以创建要使用的模型类对象,并使用模型类方法填充它们。

就像你想在CoreLocationMap中使用它创建位置模型并在你的类中初始化它并填充值。

如果需要对象数组,请在新创建的数组中添加此模型对象。希望这对你有帮助。

答案 2 :(得分:0)

这个库为你做了同样的事情JSONModel https://github.com/icanzilb/JSONModel

此库具有以下方法

    NSArray* jsonObjects = [YourModelClass arrayOfDictionariesFromModels: modelObjects];

此方法从Array of Objects返回Dictionaries数组。

现在,您可以使用

  

NSJSONSerialization