我的NSMutableArray這樣的:NSArray的以描述,反之亦然
NSMutableArray *x=[[NSMutableArray alloc]initWithObjects:@"a",@"b",@"c",@"d", nil];
NSLog(@"%@",x.description);
從我得到了以下的結果說明:
(
a,
b,
c,
d
)
我想再次重新從描述數組是有可能?
我的NSMutableArray這樣的:NSArray的以描述,反之亦然
NSMutableArray *x=[[NSMutableArray alloc]initWithObjects:@"a",@"b",@"c",@"d", nil];
NSLog(@"%@",x.description);
從我得到了以下的結果說明:
(
a,
b,
c,
d
)
我想再次重新從描述數組是有可能?
沒有辦法,將可靠地工作在所有情況下。例如,可以不知道,如果
(
123
)
表示包含字符串或數字的陣列。
加了:有實際上是所述描述轉換回陣列對象的方法(但它並不總是返回一個相同的陣列,用於上面給出的原因)。的NSArray
和NSDictionary
的description
方法使用Old-Style ASCII Property Lists格式可使用NSPropertyListSerialization
被讀取:
NSArray *a1 = @[@"123", @456];
NSString *desc = [a1 description];
NSData *d = [desc dataUsingEncoding:NSUTF8StringEncoding];
NSArray *a2 = [NSPropertyListSerialization propertyListWithData:d
options:0
format:NULL
error:NULL];
NSLog(@"%@", a2);
NSLog(@"a1[1] is a %@", [a1[1] class]);
NSLog(@"a2[1] is a %@", [a2[1] class]);
輸出:
( 123, 456 ) a1[1] is a __NSCFNumber a2[1] is a __NSCFString
正如你可以看到,該陣列a2
看起來像a1
,但是第二元素456
,這是一個NSNumber
原來,一直讀回爲NSString
。
所以,你應該用description
僅作爲調試工具。更好的方法來創建一個可逆的人類可讀的描述或歸檔已經在其他的答案和評論被提及。
是的。這是答案。 – Krishnabhadra
雖然你可能,這不是原因的NSLog()存在。 NSLog的目的是爲開發人員提供一個簡單的錯誤記錄機制。
你應該讀入的storing data其他方式:
但是,如果你真的想,你可以手動分析日誌文件。 (隨着NSRegularExpressions也許,NSScanner等)
看看JSON。 – Kevin
@Kevin它不是json – Krishnabhadra
其實你真正的目標是什麼?從現有數組獲取新數組? – Krishnabhadra