簡體   English   中英

iOS-NSMutableArray無法填充

[英]iOS - NSMutableArray won't get filled

我基本上有一個UIViewController的custon子類,該子類具有一個稱為waypointsNSMutableArray 我在控制器的-(void)viewDidLoad方法中將其初始化

waypoints = [[NSMutableArray alloc] init];

后來,在一個方法,它被通過一個稱為presentedViewController一些參數,包括一個NSMutableDictionarywaypointData ,我打電話

[waypoints insertObject:waypointData atIndex:0];

我也嘗試過

[waypoints addObject:waypointData];

但兩者似乎都不起作用!

我在那里記錄了一些東西,以使其更加清晰。 參數正確傳輸,並且保存在waypointData下的NSMutableDictionary是正確的內容。 在插入之前記錄waypoints數組會顯示其為空(這是正確的;應用已啟動;尚未添加任何數據),並且在插入后仍為空。 日志:

2014-02-19 14:40:11.050插入前xxx [xxx]航點:(空:)
2014-02-19 14:40:11.051 xxx [xxx]插入航點
2014-02-19 14:40:11.052插入后的xxx [xxx]航點:(空:)

gets logged directly before the insertion, so the program routine is really executing the insertObject:atIndex : method. 在插入之前直接被記錄,因此程序例程實際上在執行insertObject:atIndex :方法。

TL; DR:即使NSMutableArray insertObject:atIndex:-addObject:被調用,該對象也不會插入到數組中。

編輯:
此方法也在-viewDidLoad調用:

- (void)loadWaypoints {
    id unarchivedObject = [NSKeyedUnarchiver unarchiveObjectWithFile:[[self applicationDocumentsDirectory] stringByAppendingString: kAppDataFilePlistName]];
    waypoints = (NSMutableArray *)unarchivedObject;
}

如果尚未保存任何內容,則unarchivedObject當然為NULL 感謝0x7fffffff。

檢查您的waypoints NSArray ,當您在[waypoints addObject:waypointData];處調用時不應nil [waypoints addObject:waypointData];

確保“航點”數組不為零的最簡單方法是執行以下操作:

if (!waypoints)
{ 
    waypoints = [NSMutableArray new];
}
[waypoints insertObject:waypointData atIndex:0];

要么

if (!waypoints)
{ 
    waypoints = [NSMutableArray new];
}
[waypoints addObject:waypointData];

聽起來您的航點數組為零。 發布您的頭文件,包括路標的聲明。 將整個viewDidLoad方法發布到您創建空數組的位置。

我可能想到的2個最可能的原因是,您將航路點聲明為弱點,或者在viewDidLoad中具有局部變量航路點,並且在局部變量中創建了一個空數組,但未將其保存到實例變量中。

在viewDidLoad中創建空數組的行處設置一個斷點。 遍歷它,並確保正在創建您的陣列。 然后,右鍵單擊調試器窗口的變量部分中的變量,然后向該變量添加觀察點。 如果將其清除,則斷點將導致您的程序在有問題的行處中斷。

(我的帖子假設您正在使用ARC。是嗎?)

請使用以下代碼:

if(waypoints == nil){

waypoints = [[NSMutableArray alloc] init];

}

[waypoints addObject:waypointData];

暫無
暫無

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

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