簡體   English   中英

數組經過自己的方法后會丟失所有值-目標C

[英]Array loses all values after go trough its own method - Objective C

我下面有這段代碼,我試圖將Objects(String elements)添加到數組中,問題是每次我退出添加方法時,它都變為nil,它不會保留對象。

我知道我做錯了,即使我已經嘗試了很多組合和變化,甚至使用我自己的構造函數_MyArray等,也能得到相同的結果。

請問你能幫幫我嗎?

@interface ArraysModel()
@property (nonatomic, retain) NSMutableArray *MyArray;
@end

@implementation ArraysModel
@synthesize MyArray;

-(void)AddObjectToTheList:(NSString *)object {

    if(!MyArray) MyArray = [[NSMutableArray alloc] init];
    [MyArray addObject:object];
    NSLog(@"%@",self.MyArray);
    NSLog(@"Object added %u",[self.MyArray count]);
}
-(NSMutableArray *)ObjectList {

    return self.MyArray;
    NSLog(@"%@",self.MyArray);
    NSLog(@"Object added %u",[self.MyArray count]);
}

@end

標頭是這樣的:

@interface ArraysModel : NSObject

-(void)AddObjectToTheList:(NSString *)object;

這是我的ViewController發出的呼叫:

- (IBAction)AddToTheList {

    ArraysModel *MyObjectToAdd = [[ArraysModel alloc] init];
    [MyObjectToAdd AddObjectToTheList:TextArea.text];
    [self.view endEditing:YES];

好吧,這是您的問題-您正在分配init的是ArraysModel的新實例,因此每次調用都會分配一個新的數組。 您需要創建一個對實例的強引用,並檢查它是否退出,只有在沒有退出時才進行初始化。

在.h中:

@property (strong, nonatomic) ArraysModel *myObjectToAdd;

在他們中:

-(IBAction)AddToTheList {
    if (! self.myObjectToAdd) { 
        self.myObjectToAdd = [[ArraysModel alloc] init];
    } 
   [self.myObjectToAdd AddObjectToTheList:TextArea.text]; 
   [self.view endEditing:YES]
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM