2012-11-16 26 views
0

我可能做錯了什麼,但是當我使用下面的代碼,並且希望Lockbox在首次啓動應用程序時將鑰匙串保存到鑰匙串中時,什麼也不存儲。如果我再次運行該應用程序並在else部分中添加元素,則會保存數據。iOS - 鑰匙串 - 鎖盒,首次啓動時不保存數組

有什麼建議嗎?

NSString *value = @""; 
NSArray *array = [Lockbox arrayForKey:@"TestKey"]; 
value = [array componentsJoinedByString:@"|"]; 

if(value == nil) 
{ 
    BOOL result = NO; 
    NSArray *narray = [NSArray arrayWithObjects: 
         [value stringByAppendingString:@"key1"], 
         [value stringByAppendingString:@"key2"], 
         [value stringByAppendingString:@"|http://www.url.com/"], 
         [value stringByAppendingString:@"|http://www.url2.com/"],nil]; 
    result = [Lockbox setArray:narray forKey:@"TestKey"]; 
}else{ 
    NSArray *narray = [NSArray arrayWithObjects: 
         [value stringByAppendingString:@"key1"], 
         [value stringByAppendingString:@"key2"], 
         [value stringByAppendingString:@"|http://www.url.com/"], 
         [value stringByAppendingString:@"|http://www.url2.com/"],nil]; 
    result = [Lockbox setArray:narray forKey:@"TestKey"]; 

    NSString *keyv1 =[array objectAtIndex:0]; 
    NSLog(@"key value %@",keyv1); 

} 
+0

你有哪些代碼? –

+0

我已經嘗試了在方法didFinishLaunchingWithOptions中的AppDelegate中以及在我的設置視圖中的viewDidLoad中。 – Jacob

回答

0

ha!得到它..沒有看到它在第一:

在第一時間,沒什麼被存儲在鑰匙串這樣排列是NIL

然後值應爲[零componentsJoinedBy ...]

值是nil !

所以[零stringByAppendinString永遠是零並且一個空數組將保存在第一次運行


上第二運行陣列不是nil作爲加密箱讀回空數組 (以便然後所有作品)

理念,轉變:

NSArray *array = [Lockbox arrayForKey:@"TestKey"]; 
value = [array componentsJoinedByString:@"|"]; 

if(value==nil) 
... 

NSArray *array = [Lockbox arrayForKey:@"TestKey"]; 
if(array) 
    value = [array componentsJoinedByString:@"|"]; 
else 
    value = @""; 

if(value.length) 
... 
+0

更改爲此,使用value.length == 0作爲測試,但仍然不保存,直到第二次運行。有點像它必須先儲存一些空的東西。但我也嘗試將空的東西存儲起來,然後在第一次應用程序啓動後存儲數組,但直到第二個應用程序啓動時才存儲。 – Jacob

+0

對不起,如果(數組)...其他值= @「」|編輯我的回答 –

+0

點的值是零,當你試圖追加到它......消息爲零結果爲零 –