【发布时间】:2016-09-02 20:21:05
【问题描述】:
我正在尝试使用自定义方法(由另一个用户创建)复制我创建的称为 [Ingredient] 的结构的实例。方法是这样的;
convenience init(copyingIngredientsFrom meal: Meal, atIndexPaths indexPaths: [IndexPath]) {
let sections = meal.ingredientSections
self.init(mealTitle: selectedMeal!.mealTitle, mealID: selectedMeal!.mealID, mealImage: selectedMeal!.mealImage, ingredients: indexPaths.map {sections[$0.section][$0.row]})
最初的饭菜是;
init(mealTitle: String, mealID: Int, mealImage: UIImage?, ingredients: [Ingredient]) {
self.mealTitle = mealTitle
self.mealID = mealID
self.mealImage = mealImage!
self.ingredients = [Ingredient]()
}
新餐点旨在创建一个新的 [餐点] 对象,该对象复制所选成分。我在 IndexPathsForSelectedRows 使应用程序崩溃时遇到了一些问题。理想情况下,我还希望默认情况下“选择”行,但这不是必需的。可以看出,此代码在 segue 之前执行。理想情况下,一旦代码修复,我想追加 newMeal,而不是 SelectedMeal。这段代码的问题是它当前使应用程序崩溃,并且 indexPaths.count 仅在选择 1 和 x 之间的任何值时才显示 1 并且仍然崩溃,但如果我不选择任何值,则在单击后什么也不打印按钮。如果我删除 if 语句,那么应用程序可以正常工作,没有问题。
if let list = detailTableViewIn.indexPathsForSelectedRows {
print(indexPaths.count)
let newMeal = Meal(copyingIngredientsFrom: selectedMeal!, atIndexPaths: list)
}
myMeals.insert(selectedMeal!, at: myMealsPosition)
myMealsPosition += 1
// Segues away
self.performSegue(withIdentifier: "MealCreated", sender: self)
任何帮助将不胜感激。
【问题讨论】:
-
我意识到这是我的 init 的问题。我会先尝试做一些研究。感谢您的帮助@Shades
标签: ios iphone swift xcode uitableview