“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"] }