2015-12-07 1 views
-3

Я создаю plist, в котором я хочу сохранить определенные данные. У меня есть словарь, который мне нужно написать в файле. Словарь имеет массив имен для значений и массив ключей b для ключей. Но у меня нет идеи, где я делаю неправильно, но мой код не работает.Добавление массивов в качестве ключа и значения в словаре в iOS9 swift

let namearray = [self.usernametextfield.text,self.passwordtextfield.text] 
     let keyarray = ["username","password"] 
     let dict = NSMutableDictionary() 
     dict.setObject(namearray as! AnyObject, forKey: keyarray) // I am having problem in this line of how to add arrays to dictionary. 
     dict .writeToFile(plistfinalpath, atomically: true) 

Так может ли кто-нибудь предложить, как добавлять массивы в виде ключей и значений в словаре. Пожалуйста, исправьте мой код.

+0

Из [aaisataev] (http://stackoverflow.com/users/5400375/aaisataev): Вы можете переписать его в скор - [NSDictionary, содержащий NSArray] (HTTP: //stackoverflow.com/questions/5526941/nsdi ctionary-contains-an-nsarray) – KyleMit

ответ

1

вы не можете использовать массив в качестве ключа

Я не уверен, что вам нужно точно, но, вероятно, что-то вроде

import Foundation 
let namearray = ["name","pswd"] 
let keyarray = ["username","password"] 
let dict = NSMutableDictionary() 
dict.setObject(namearray[0], forKey: keyarray[0]) 
dict.setObject(namearray[1], forKey: keyarray[1]) 
// gives you 

dump(dict) 
/* 
▿ 2 key/value pairs 
▿ [0]: (2 elements) 
▿ .0: username #0 
▿ NSMutableString: username 
▿ NSString: username 
- NSObject: username 
- .1: name 
▿ [1]: (2 elements) 
▿ .0: password #1 
▿ NSMutableString: password 
▿ NSString: password 
- NSObject: password 
- .1: pswd 
*/ 

ОК, это кажется, что вы хотите добавить массив в словарь ...

import Foundation 
let namearray = ["name","pswd"] 
let dict = NSMutableDictionary() 
dict.setObject(namearray, forKey: "user1") 
// gives you 

dump(dict) 
/* 
▿ 1 key/value pair 
▿ [0]: (2 elements) 
▿ .0: user1 #0 
▿ NSMutableString: user1 
▿ NSString: user1 
- NSObject: user1 
▿ .1: 2 elements 
- [0]: name 
- [1]: pswd 
*/ 
+0

Хорошо, у вас есть ответы gvn grt в прошлом на мои вопросы. Tx. Здесь я хочу, чтобы всякий раз, когда пользователь вводит имя пользователя и пароль, он будет сохранен в пути plist. В obj c я добавлял имя пользователя, пароль для значения массива, и после этого я добавил его в словарь с соответствующим массивом ключей. Так можно быстро. –

+0

Да, вы можете добавить массив в словарь. см. мой пример выше. затем вы можете сохранить его в plist, как вы пробовали раньше. я выбираю ключ «user1», это зависит от вас, каков будет ваш ключ. ключ должен быть совместимым с NSCopying, то есть все – user3441734

+0

ключ не должен быть массивом вообще. это должно быть значение, соответствующее NSCopying (то же самое для быстрого для Objective C) – user3441734