“string”与“AnyObject”错误不相同
我试图通过NSUserDefaults从我的应用程序传递数据到Apple Watch应用程序时遇到问题。 每当我尝试检索存储的数组,我得到的错误'String' is not identical to 'AnyObject'
。
我一直在试图找出一个解决scheme,但我不能解决这个问题,因为我在我的应用程序中的其他地方使用相同的方法,它没有问题。
这是我在苹果手表的一部分:
var defaults = NSUserDefaults(suiteName: "group.AffordIt") tempNames = defaults?.objectForKey("namesWatch") as NSArray tempDates = defaults?.objectForKey("datesWatch") as NSArray tempAmounts = defaults?.objectForKey("valuesWatch") as NSArray
包含的应用程序部分:
defaults?.setObject(names, forKey: "namesWatch") defaults?.setObject(dates, forKey: "datesWatch") defaults?.setObject(values, forKey: "valuesWatch")
名称,date和值是string数组。
有任何想法吗?
国际海事组织你的问题是,你试图施放一个可选的价值,例如
if let names = defaults.objectForKey("namesWatch") as? NSArray { tempNames = names }
大概这个问题是相关的: 使用objectForKey Swift NSUserDefaults NSArray 。
您需要将您从集合中检索的对象转换为string:
defaults?.setObject(names, forKey: "namesWatch") as? String defaults?.setObject(dates, forKey: "datesWatch") as? String defaults?.setObject(values, forKey: "valuesWatch") as? String
let namesStringArray = ["John","Mary"] let datesStringArray = ["May 21, 2009, 11:10 PM"] let doublesStringArray = ["1.5","2.2","3.3"] if let defaults = NSUserDefaults(suiteName: "group.AffordIt") { defaults.setObject(namesStringArray , forKey: "namesWatch") defaults.setObject(datesStringArray, forKey: "datesWatch") defaults.setObject(doublesStringArray, forKey: "valuesWatch") } let defaults = NSUserDefaults(suiteName: "group.AffordIt") if let tempNames = defaults!.stringArrayForKey("namesWatch") { println(tempNames) // ["John", "Mary"] } if let tempDates = defaults!.stringArrayForKey("datesWatch") { println(tempDates) // ["May 21, 2009, 11:10 PM"] } if let tempAmounts = defaults!.stringArrayForKey("valuesWatch") { println(tempAmounts) // ["1.5", "2.2", "3.3"] }