【发布时间】:2016-01-22 14:01:42
【问题描述】:
我尝试将数组值设置为字典键数组。 这是我的代码
这是我的时间槽数组初始化:
arrmTimeSlots = [
["time": "6am", "action": []],
["time": "7am", "action": []],
["time": "8am", "action": []],
["time": "9am", "action": []],
["time": "10am", "action": []],
["time": "11am", "action": []],
["time": "12pm", "action": []],
["time": "1pm", "action": []],
["time": "2pm", "action": []],
["time": "3pm", "action": []],
["time": "4pm", "action": []],
["time": "5pm", "action": []],
["time": "6pm", "action": []],
["time": "7pm", "action": []],
["time": "8pm", "action": []],
["time": "9pm", "action": []],
["time": "10pm", "action": []]
];
我最初是在 tableview 上显示“时间”键的值。当用户从日历中选择日期时,我正在从数据库中获取与所选日期相对应的数据。数据采用字典格式:
{
"Description" = "this is discription";
"End_time" = 201601240645;
"Location" = "xyz";
"Rec_uid" = "r576thg8ed-698a-4a71-87e5-366bec44638a";
"Satrt_time" = 201601240645;
"Title" = "hrhrcffu";
"uid" = "c39b2987-5d19-4178-8591-c052b5205ad5";
}
所以我想在 ArrmTimeSlots 数组中为“action”键添加这个字典。 这是我在数组中添加字典的代码:
for scheduleDay in arrmTimeSlots
{
let day = scheduleDay as! NSDictionary
let timeOnSlots = day["time"] as! String
let action = day["action"] as! NSArray
print("time \(timeOnSlots) action \(action)")
if(timeOnSlots == concatTimeslotTime) // here compare time if true set array to action key
{
day.setValue(array, forKey: "action")
}
}
但是,我的应用程序崩溃并在 'd.setValue(array, forKey: "action")' 这一行得到错误:
由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[<_ttgcss29_nativedictionarystorageownersscso8nsobject_> setValue:forUndefinedKey:]:此类不符合键操作的键值编码。” *** 首先抛出调用堆栈: (0x240dc0d7 0x32778c77 0x240dbde5 0x24d71c95 0x1ea1c4 0x1e7888 0x1e57f4 0x1e5974 0x107c2b 0xfc95d 0x27d36dd9 0x2793f495 0x2793f197 0x278bb4c9 0x278bb4c9 0x2776dee3 0x277677f1 0x2773d9b5 0x279b40ff 0x2773c3b7 0x240a200f 0x240a1423 0x2409faa1 0x23feb6d1 0x23feb4e3 0x2b9581a9 0x2779d445 0x17ffd8 0x32d46aaf) libc++abi.dylib:以 NSException 类型的未捕获异常终止
请为此建议我解决方案。 提前致谢!
【问题讨论】:
-
你必须使用
setObject而不是setValue -
d定义在哪里? -
@SandyChapman 查看我编辑的问题。这是“一天”。
-
使用 Foundation 集合类型(
NSArray、NSDictionary)而不是 Swift 原生类型有什么特别的原因吗? -
顺便说一句,您必须使用
NSMutableDictionary,否则您将无法更改值(当然使用setObject,而不是setValue)。另请注意,day["action"] = array也适用于NSMutableDictionary。
标签: arrays swift dictionary key-value-coding