从另一个类中删除数组中的Object

时间:2015-07-29 23:14:25

标签: ios objective-c nsmutablearray nsarray

我在NSMutableArray中有一个交易列表。我想在兑换课程中删除其中一项交易。我该怎么办?我在UITableViewController中使用tableviewcells来使用count方法显示我的交易。

如何使用兑换按钮的IBAction从交易数组中删除交易?

需要很多帮助,这非常重要,谢谢。

SELECT *
FROM (
    SELECT t1.id, t1.name, t2.category, t2.subcategory
    FROM t1
    INNER JOIN t2 ON t1.id=t2.id
) AS result
LEFT JOIN t3 ON result.id=t3.id

2 个答案:

答案 0 :(得分:0)

  1. 您不需要arrayWithObjects方法。只需:self.dealListArray = @[dealOne, dealTwo, dealThree];

  2. 此按钮位于您的单元格内?最常用的方法是使用委托模式:Adding a delegate to a custom UITableViewCell (bad access error)

答案 1 :(得分:0)

要在不同的ViewController之间进行通信,您需要使用NSNotificationCenter

在您的AppDealsTVC中,如果要删除某笔交易,则可以致电[NSNotificationCenter postNotificationName:@"RedeemDeal" object:self userInfo:deal],并使用viewDidLoad RedeemVC [NSNotificationCenter addObserver:self selector:@selector(methodNameToRemoveDeal:) notificationName:@"RedeemDeal" notificationSender:nil]方法通过methodNameToRemoveDeal:订阅此通知1}}

这会将交易作为参数发送到方法redeemButton:sender,您可以在其中删除它。您需要实现不同的删除方法,而不是直接调用methodNameToRemoveDeal:方法,但您可以通过redeemButton:sender中的RedeemDealVC调用[NSNotificationCenter removeObserver:self name:@"RedeemDeal" object:nil]来重复使用相同的兑换代码

您还需要确保在[dealloc]的{​​{1}}方法中调用RedeemVC,以便在从堆栈中取消分配RedeemVC时取消订阅该事件以防止内存泄漏。

我还建议在应用程序的某处将@"RedeemDeal"通知名称定义为常量,以避免在应用程序中对许多不同位置的名称进行硬编码。如果需要,可以在以后的单个位置更容易更改。

虽然我正在制作设计建议......但在模型中定义Deal类可能不是一个好主意,而是依赖于交易的字典表示。通过这种方式,您可以更清楚地将交易的不同部分定义为属性,并且可以包含- (void) redeem等方法来处理您的交易的兑换。