[英]How to add an NSMutableArray to an NSMutableArray Objective-c
[英]How to group object in NSMutableArray and divide to separate NSMutableArray in Objective-C
我有這樣的NSMutableArray:
// NSMutableArray *Data = (NSMUtableArray(NSDictionary))
Data = {"Device": "A1", "Temperature": "25", "datetime": "2013.02.03"},
{"Device": "A2", "Temperature": "25", "datetime": "2013.02.03"},
{"Device": "A3", "Temperature": "25", "datetime": "2013.02.03"},
{"Device": "A1", "Temperature": "25", "datetime": "2013.02.04"},
{"Device": "A2", "Temperature": "25", "datetime": "2013.02.04"}.
我如何按照“日期時間”細分並將其分組到單獨的NSMutableArray中。 如上所述,情況將分為:
Data_d1 = {"Device": "A1", "Temperature": "25", "datetime": "2013.02.03"},
{"Device": "A2", "Temperature": "25", "datetime": "2013.02.03"},
{"Device": "A3", "Temperature": "25", "datetime": "2013.02.03"}
和
Data_d2 = {"Device": "A1", "Temperature": "25", "datetime": "2013.02.04"},
{"Device": "A2", "Temperature": "25", "datetime": "2013.02.04"}
您可以使用以下代碼來實現:
let data:[[String: String]] = [ ["Device": "A1", "Temperature": "25", "datetime": "2013.02.03"], ["Device": "A2", "Temperature": "25", "datetime": "2013.02.03"], ["Device": "A3", "Temperature": "25", "datetime": "2013.02.03"], ["Device": "A1", "Temperature": "25", "datetime": "2013.02.04"], ["Device": "A2", "Temperature": "25", "datetime": "2013.02.04"]] let dateTimeArray = data.compactMap({ $0["datetime"] }) let uniqueDateTimeArray = Array(Set(dateTimeArray)) var desiredSeparatedArray = [[[String: String]]]() for dateTime in uniqueDateTimeArray { var arrayForDateTime = [[String: String]]() for element in data { if element["datetime"] == dateTime { arrayForItem.append(element) } } desiredSeparatedArray.append(arrayForDateTime) }
最終的desiredSeparatedArray
是答案!!
如果您有這樣的字典數組數組:
var data = [["Device": "A1", "Temperature": "25", "datetime": "2013.02.02"],
["Device": "A2", "Temperature": "25", "datetime": "2013.02.03"],
["Device": "A3", "Temperature": "25", "datetime": "2013.02.03"],
["Device": "A1", "Temperature": "25", "datetime": "2013.02.04"],
["Device": "A2", "Temperature": "25", "datetime": "2013.02.04"]]
然后,您可以根據以下任何鍵將它們隔離:
var dateArray = data.compactMap{ $0["datetime"] }
let uDateArray = Array(Set(dateArray))
var segregatedArray = [[[String: String]]]()
for dateTime in uDateArray {
segregatedArray.append(data.filter{$0["datetime"] == dateTime})
}
print(segregatedArray);
根據要求添加帶有字典數組作為原始數據的Objective-C版本。
考慮您有如下的字典數組:
NSArray *array=@[
@{@"Device": @"A1",@"Temperature":@"25",@"datetime":@"2013.02.03"},
@{@"Device":@"A2",@"Temperature":@"25",@"datetime":@"2013.02.03"},
@{@"Device":@"A3",@"Temperature":@"25",@"datetime":@"2013.02.03"},
@{@"Device":@"A1",@"Temperature":@"25",@"datetime":@"2013.02.04"},
@{@"Device":@"X1",@"Temperature":@"26",@"datetime":@"2013.02.07"},
@{@"Device":@"Y1",@"Temperature":@"27",@"datetime":@"2013.02.07"},
@{@"Device":@"A2",@"Temperature":@"25",@"datetime":@"2013.02.04"}];
然后,您可以按以下方式將它們隔離:
NSMutableDictionary* mutableDic = [[NSMutableDictionary alloc] initWithCapacity:1];
for (NSDictionary* dic in array) {
NSString* dateTime = [dic valueForKey:@"datetime"];
NSMutableArray* data = [mutableDic valueForKey:dateTime];
if(data != nil)//data with this key avalaibe, add further.
{
[data addObject:dic];
}
else//data with this key not avalaibe, make a mutable array with this dic and add.
{
NSMutableArray* newData = [[NSMutableArray alloc] initWithObjects:dic, nil];
[mutableDic setValue:newData forKey:dateTime];
}
}
NSLog(@"%@", mutableDic);
您可以根據任何鍵進行隔離,只需將該鍵放在此處[dic valueForKey:@"datetime"];
。 您可以按要求輸入Device
而不是datetime
。
隔離后調試器的屏幕截圖:
嘗試這個
let array = Data as! [[String:String]]
let dictionary = Dictionary(grouping: array, by: {$0["datetime"]!})
var listOfArray = [[[String:String]]]()
dictionary.forEach({listOfArray.append($0.value)})
listOfArray將擁有所有數組
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.