2013-10-01 55 views
0

我想用KeychainItemWrapper類保存NSArray我們如何節約使用的NSArray KeychainItemWrapper類(ARC)

我已經知道,我們可以存儲NSDictionary閱讀This Question

但它不工作

這是我迄今所做

NSArray *myArray = [[NSArray alloc]initWithObjects:@"Hello1",@"Hello2",@"Hello3",@"Hello4", nil]; 
NSDictionary *myDic = [[NSDictionary alloc]initWithObjectsAndKeys:myArray, @"arrayKey", nil]; 

NSString *error; 
NSData *dictionaryRep = [NSPropertyListSerialization dataFromPropertyList:myDic format:NSPropertyListXMLFormat_v1_0 errorDescription:&error]; 

KeychainItemWrapper *keychain = 
[[KeychainItemWrapper alloc] initWithIdentifier:@"MyIdentifier" accessGroup:nil]; 

[keychain setObject:dictionaryRep forKey:(__bridge id)kSecValueData]; 

但是在設定對象的最後一行是崩潰。

埃羅日誌:

2013-10-01 12:16:47.590 stackoverflowtry[3883:a0b] -[__NSCFData dataUsingEncoding:]: unrecognized selector sent to instance 0xa1686a0 
2013-10-01 12:16:47.593 stackoverflowtry[3883:a0b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFData dataUsingEncoding:]: unrecognized selector sent to instance 0xa1686a0' 

需要幫助。

+0

請讓我知道如何保存任何的NSDictionary的NSArray或者,既會爲我工作.. –

+0

爲什麼你用「(__bridge ID) kSecValueData「作爲存儲在字典中的關鍵字?,您是否記錄了該值以檢查值? – josh

+0

@josh:(__bridge id)kSecValueData是KeychainItemWrapper.m文件中的預定義鍵...我不允許我們被允許使用用戶定義鍵....並且如果我只是通過NSString而不是dictionaryRep,此代碼可以正常工作。 –

回答

1

我有想法。你可以試試這個。你必須#import "SBJsonWriter.h"

NSArray *myArray = [[NSArray alloc]initWithObjects:@"Hello1",@"Hello2",@"Hello3",@"Hello4", nil]; 
NSDictionary *myDic = [[NSDictionary alloc]initWithObjectsAndKeys:myArray, @"arrayKey", nil]; 


KeychainItemWrapper *keychain = 
[[KeychainItemWrapper alloc] initWithIdentifier:@"MyIdentifier" accessGroup:nil]; 

    SBJsonWriter *jsonWriter = [[SBJsonWriter alloc] init]; 
    NSString *jsonString = @""; 

     jsonString = [jsonWriter stringWithObject:myDic]; 

    [keychain setObject:jsonString forKey:(__bridge id)(kSecAttrDescription)]; 

如果你想要得到它

NSString *JsonString= [keychain objectForKey:(__bridge id)(kSecAttrDescription)]; 
NSArray *myArray= [[JsonString JSONValue] objectForKey:@"arrayKey"]; 
+0

嘿..我會試試這個。 –

+0

如果你確定,投票我plz:D – Luna

+0

硬運氣...它不工作... :( –