我正致力于实施"收藏"我的应用中的功能。
这个想法是"最喜欢的"一页快速回到它。
以下是我的尝试:
// In the Detail View Controller
- (void)favoriteRecipe
{
NSUserDefaults * prefs = [NSUserDefaults standardUserDefaults];
NSMutableArray * favoriteDrinks;
if ([prefs objectForKey:@"favoriteDrink"] == nil)
{
NSMutableArray * array = [[NSMutableArray alloc] init];
[prefs setObject:array forKey:@"favoriteDrink"];
}
NSMutableArray * tempArray = [[prefs objectForKey:@"favoriteDrink"] mutableCopy];
favoriteDrinks = tempArray;
NSString * drinkNameString = self.drinkNameLabel.text;
NSString * ingredientString = self.ingredientLabel.text;
NSArray * favArray = [NSArray arrayWithObjects:drinkNameString, ingredientString, nil];
[favoriteDrinks addObject:favArray];
isFavorite = YES;
[prefs setObject:favoriteDrinks forKey:@"favoriteDrink"];
if (isFavorite == YES)
{
//Change the image
}
}
在我的FavoriteViewController中,我设置了一个表。我希望显示名称,然后选择它将转到该页面。
我使用Parse.com作为我的后端,所以我只有一个细节视图控制器根据项目进行更改。
这里我尝试返回详细视图控制器但崩溃:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
RecipeDetailViewController * recipeDetail = [[RecipeDetailViewController alloc] initWithNibName:@"RecipeDetailViewController" bundle:nil];
PFObject * favObjects = [self.favArray objectAtIndex:indexPath.row];
NSArray * ingredients = [favObjects objectForKey:@"ingredients"]; //Crashes Here
recipeDetail.ingredientArray = ingredients;
NSString * nameString = [favObjects objectForKey:@"recipe_name"];
recipeDetail.nameString = nameString;
[self.navigationController pushViewController:recipeDetail animated:YES];
}
我收到的错误是:
-[__NSCFArray objectForKey:]: unrecognized selector sent to instance 0xe76bea0
任何建议都将不胜感激!
答案 0 :(得分:0)
此错误意味着您尝试在阵列上调用objectForKey。看来你通过致电[self.favArray objectAtIndex:indexPath.row]
获得的回报并不是你期望得到的。你期待一个PFObject,但似乎你得到一个数组(如果确实是导致崩溃的那条线)。
查看调试器,了解[self.favArray objectAtIndex:indexPath.row]
实际返回的内容。