2016-12-26 65 views
0

你好我想通过这个JSON文件来分析:http://pastebin.com/TCdkJnvZswift3与模型问题解析

下面是我做的信息类我想分析出:

public class Recipe: NSObject { 

    var recipeID : NSNumber? 
    var categoryName : String? 
    var ingredients : [Int : Ingredients]? 
    var nutrition : [Nutrition]? 
    var imageName : String? 
    var instructions : [Int : String]? 

} 

class Ingredients : NSObject { 

    var id : NSNumber? 
    var name : String? 
    var quantity: NSNumber? 
    var unit : String? 

} 

class Nutrition : NSObject { 

    var serving : String? 
    var calories : NSNumber? 
    var fat : String? 
    var carbs : NSNumber? 

} 

此图片是目前的问题..我真的不知道我在做什么错在这里..所以,如果我能得到任何帮助,以解决我的逻辑/问题,将不胜感激。

func parseToJSON(data: Any) { 

    // add meals to here 
    var recipes : [Recipe] 
    // single meals here 
    var meals : Recipe 

    do { 

     if let json = try JSONSerialization.jsonObject(with: data as! Data) as? [String: Any], 
     meals.recipeID == json["recipeID"] as! NSNumber? , 
     meals.imageName == json["ImageURL"] as! String?, 
     //meals.instructions == meals.parseInstructions(instructions: (json["Instructions"] as! String)), 
     meals.categoryName == "Meals" , 

     let ingredients = json["Ingredients"] as! [[String: Any]]? { 

       for items in ingredients { 
        var i : Int = 0 
        var groceryItems : Ingredients 

        groceryItems.id = items["IngredientID"] as? NSNumber 
        groceryItems.name = items["Name"] as? String 
        groceryItems.quantity = items["Quantity"] as? NSNumber 
        groceryItems.unit = items["Unit"] as? String 

        meals.ingredients?[i] = groceryItems 
       } 
      }; 

     let nutritionInfo = json["NutritionInfo"] as! [[String: Any]]? { 

       for items in nutritionInfo { 

        var nutrition : Nutrition 

        nutrition.serving = items["SingularYieldUnit"] as? String 
        nutrition.calories = items["TotalCalories"] as? NSNumber 
        nutrition.fat = items["TotalFat"] as? String 
        nutrition.carbs = items["TotalCarbs"] as NSNumber 

        meals.nutrition = nutrition 
       } 
     }; 
    } 
    catch{ 

    } 

} 
+0

请发布实际的代码,*不是代码的图片*。 –

+0

好的,我添加了代码 – codeNinjaBro

回答

1

看起来您有各种语法错误,但编译器一次只能显示一个问题。我已经为你清理了一些代码,这会推动你朝着正确的方向发展。我不能完全解决它,因为我不知道你的确切意图是什么。

这里是更新parseToJSON功能:

func parseToJSON(data: Any) { 

    let meals = Recipe() 

    do { 

     if let json = try JSONSerialization.jsonObject(with: data as! Data) as? [String: Any] { 

      meals.recipeID == json["recipeID"] as! NSNumber? 
      meals.imageName == json["ImageURL"] as! String? 
      //meals.instructions == meals.parseInstructions(instructions: (json["Instructions"] as! String)), 
      meals.categoryName == "Meals" 

      if let ingredients = json["Ingredients"] as! [[String: Any]]? { 
       for items in ingredients { 
        let groceryItems = Ingredients() 
        groceryItems.id = items["IngredientID"] as? NSNumber 
        groceryItems.name = items["Name"] as? String 
        groceryItems.quantity = items["Quantity"] as? NSNumber 
        groceryItems.unit = items["Unit"] as? String 
        meals.ingredients?.append(groceryItems) 
       } 
      } 

      if let nutritionInfo = json["NutritionInfo"] as! [[String: Any]]? { 
       for items in nutritionInfo { 
        let nutrition = Nutrition() 
        nutrition.serving = items["SingularYieldUnit"] as? String 
        nutrition.calories = items["TotalCalories"] as? NSNumber 
        nutrition.fat = items["TotalFat"] as? String 
        nutrition.carbs = items["TotalCarbs"] as? NSNumber 
        meals.nutrition?.append(nutrition) 
       } 
      } 

     } 

    } 
    catch{ 

    } 

} 

我也改变了Recipe对象的ingredients属性:

var ingredients : [Ingredients]? 

的主要问题是,很多你的代码是一个if let内表达和你的缩进已关闭,所以你不能轻易说出。