2016-02-16 67 views
0

我已經解析了導致元素數組的JSON。我希望將它存儲在一個數組中,就像我們將元素動態添加到ArrayList並稍後訪問它一樣。在iOS中,ArrayList的替代方法是動態添加元素並在以後檢索元素。 iOS中是否有其他獨特的選項可用於動態存儲和檢索元素?iOS中的ArrayList的替代?

數據1: 參考號碼:1241 InvoiceNumber:1421241 InvoiceDate:06-FEB-16

數據2: 參考號碼:3241 InvoiceNumber:12421 InvoiceDate:06-FEB-16

以上是我通過解析json得到的具有獨特元素的兩個數據。

在A類,林添加以下代碼來存儲在NSUserDefaults的所述的NSMutableArray,

for (NSUInteger i = 0; i < savecount; i++) { 
    NSMutableArray *newArray = [[NSMutableArray alloc] init]; 
    [myArrays addObject:newArray]; 
    [newArray addObject:shipmentReferenceNumber]; 
    [[NSUserDefaults standardUserDefaults] setObject:newArray forKey:@"shipmentReferenceNumber "]; 
} 

在B類,林試圖通過使用以下代碼來訪問它,但它返回null

NSString *referenceNumber = [[NSUserDefaults standardUserDefaults] stringForKey:@"referenceNumber"]; 
+0

NSMutableArray? – Avi

+0

即使我可以模擬HashMap也會很好,因爲有很多元素需要存儲 –

+0

閱讀我更新的問題 –

回答

1

使用Hash MapNSArray。使用下面的代碼。

在A類,同時存儲:

NSMutableArray* arrayList = [[NSMutableArray alloc] init]; 
    for (int i=0; i<savecount; i++) { 

     NSDictionary* innerDict = [NSDictionary dictionaryWithObjectsAndKeys:your_referenceNo,@"referenceNo",your_InvoiceNumber,@"invoiceNumber",your_InvoiceDate,@"invoiceDate", nil]; 

     [arrayList addObject:innerDict]; 
    } 

    NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:arrayList]; 
    [[NSUserDefaults standardUserDefaults] setObject:encodedObject forKey:@"data"]; 

在B類而retraving:

NSData* data = [[NSUserDefaults standardUserDefaults] objectForKey:@"data"]; 
    NSMutableArray* arrayList = [NSKeyedUnarchiver unarchiveObjectWithData:data]; 
    NSLog(@"Reference No : %@",arrayList[0][@"referenceNo"]); 

編輯:到動態訪問到的ArrayList

for(int i=0; i<[arrayList count];i++){ 
    NSLog(@"Reference No : %@",arrayList[i][@"referenceNo"]); 
    } 

謝謝

+0

它的工作原理謝謝。 –

+0

如何動態訪問它。我的意思是,當我不知道將在運行時生成的數組的大小時,如何動態地在類b中獲取數組的值。 –

+1

@Stanly,請檢查我的更新答案。讓我知道你是否卡在任何地方。 –

-1

在objC和迅速的,一個ArrayListNSMutableArray


A hash map類似功能(存儲鍵值對。鍵是唯一的)由NSDictionary提供

+0

什麼是downvote? –

1

如果數組是可編輯的,則可以使用NSMutableArray,否則使用NSArray。

+0

閱讀我更新的問題 –

1

原諒我,如果我誤解你想達到什麼樣的,但我會考慮創建一個數據模型對象:

@interface Data : NSObject 
@property (nonatomic) NSInteger referenceNumber; 
@property (nonatomic) NSInteger invoiceNumber; 
@property (strong, nonatomic) NSString *invoiceDate; 
@end 

然後,您可以創建數據對象的數組:

@property (strong, nonatomic) NSMutableArray <Data *> *dataArray; 
+0

閱讀我更新的問題 –