自从升级到Swift 4.2以来,我发现许多NSKeyedUnarchiver和NSKeyedArchiver方法已被弃用,我们现在必须使用type方法static func unarchivedObject<DecodedObjectType>(ofClass: DecodedObjectType.Type, from: Data) -> DecodedObjectType?来取消归档数据.
我成功地存档了我的定制类WidgetData的数组,这是一个NSObject子类:
private static func archiveWidgetDataArray(widgetDataArray : [WidgetData]) -> NSData {
guard let data = try? NSKeyedArchiver.archivedData(withRootObject: widgetDataArray as Array, requiringSecureCoding: false) as NSData
else { fatalError("Can't encode data") }
return data
}
Run Code Online (Sandbox Code Playgroud)
当我尝试取消归档此数据时出现问题:
static func loadWidgetDataArray() -> [WidgetData]? {
if isKeyPresentInUserDefaults(key: USER_DEFAULTS_KEY_WIDGET_DATA) {
if let unarchivedObject = UserDefaults.standard.object(forKey: USER_DEFAULTS_KEY_WIDGET_DATA) as? Data {
//THIS FUNCTION HAS NOW BEEN DEPRECATED:
//return NSKeyedUnarchiver.unarchiveObject(with: unarchivedObject as Data) as? [WidgetData]
guard let nsArray = …Run Code Online (Sandbox Code Playgroud) 我正在使用unarchiveObjectWithData取消归档数据NSUserDefaults并且它运行良好,但它在 iOS 12.0 中已被弃用。Xcode 建议使用unarchivedObjectOfClass:fromData:error:,但此方法不起作用。
我有一个类的对象数组要取消归档。
我曾尝试使用unarchivedObjectOfClass:fromData:error:, 也unarchivedObjectOfClasses:fromData:error:与所有类(NSArray、NSString、MYCLASS ..)
作品
NSArray *stored = [NSKeyedUnarchiver unarchiveObjectWithData:data];
Run Code Online (Sandbox Code Playgroud)
才不是:
NSArray *stored = [NSKeyedUnarchiver unarchivedObjectOfClass:[MYCLASS class] fromData:data error:&error];
Run Code Online (Sandbox Code Playgroud)
我收到“无法读取数据,因为它的格式不正确。”
升级到iOS 12和XCode 10之后我有以下内容:
2018-09-20 11:58:09.622656+0400 MyApp-Swift[1027:137400] [avas] AVAudioSessionPortImpl.mm:56:ValidateRequiredFields: Unknown selected data source for Port Speaker (type: Speaker)
Run Code Online (Sandbox Code Playgroud)
知道它是什么,它是应用程序中的错误还是iOS 12中的已知问题?
添加
application.statusBarStyle = .lightContent
Run Code Online (Sandbox Code Playgroud)
到我的AppDelegate的didFinishLaunchingWithOptions方法也没有添加
override var preferredStatusBarStyle: UIStatusBarStyle {
return UIStatusBarStyle.lightContent
}
Run Code Online (Sandbox Code Playgroud)
到VC不再适用于iOS12/Xcode10
有任何想法吗?
我们有一个受基本身份验证保护的网络服务器(nginx)https://www.website.com.API https://www.website.com/api没有基本身份验证!
现在的问题是,自Safari 12(macOS和iOS)以来,由我们的javascript应用程序设置的带有/ api请求的承载令牌的http头实际上没有发送到服务器,因为它被替换为基本令牌.我可以在safari开发人员工具的网络选项卡中看到这一点.如前所述/ api是公开的,不受保护!
Chrome例如确实发送了正确的承载令牌,而不是基本令牌.
当我在nginx配置中删除基本身份验证并重新启动safari时,一切正常,并且Bearer令牌被发送到api.
似乎safari 12只是为域的每个请求自动发送基本令牌.
有没有人知道这是否是野生动物园的一个错误?一种解决方案可能是我们将api目标从/ api更改为单独的子域,如api.website.com.
谢谢你的帮助.
safari authorization basic-authentication bearer-token ios12
我无法从(Xcode -> 首选项 -> 组件)找到模拟器的iOS 12.5版本。
我在 Xcode 12.2 和 12.4 版本上检查过,但没有成功。有谁知道为什么?,我需要执行任何更新吗?,组件部分中显示的最新 iOS 版本 Xcode 是14.3
我安装了Xcode 10并将我的iOS应用程序升级到Swift 4.2.当我通过Xcode运行我的测试(UI和单元)时,在运行iOS 12的iPhone模拟器上,测试成功启动.当我尝试在运行先前iOS版本(例如iOS 10.3.1)的模拟器上运行测试时,我得到"无法加载测试包".这些测试在Xcode 9.4上成功运行.我可以在这个旧的模拟器上运行我的应用程序而不会出现问题.
Xcode输出如下("Reading List"是应用程序名称):
2018-09-16 15:11:36.667 ReadingList [11401:11478426]无法从文件加载测试包:/// Users/andrewbennet/Library/Developer/Xcode/DerivedData/ReadingList-edsxqugqvkymbgfrbivbjmzebuya/Build/Products/Debug-iphonesimulator /ReadingList.app/PlugIns/ReadingList_UnitTests.xctest/:Error Domain = NSCocoaErrorDomain Code = 3587"dlopen_preflight(/Users/andrewbennet/Library/Developer/Xcode/DerivedData/ReadingList-edsxqugqvkymbgfrbivbjmzebuya/Build/Products/Debug-iphonesimulator/ReadingList.app /PlugIns/ReadingList_UnitTests.xctest/ReadingList_UnitTests):找不到合适的图像.找到:/Users/andrewbennet/Library/Developer/Xcode/DerivedData/ReadingList-edsxqugqvkymbgfrbivbjmzebuya/Build/Products/Debug-iphonesimulator/ReadingList.app/PlugIns/ReadingList_UnitTests .xctest/ReadingList_UnitTests:mach-o,但不是为iOS模拟器构建的"UserInfo = {NSLocalizedFailureReason =捆绑包已损坏或缺少必要的资源.,NSLocalizedRecoverySuggestion =尝试重新安装捆绑包.,NSFilePath =/U sers/andrewbennet/Library/Developer/Xcode/DerivedData/ReadingList-edsxqugqvkymbgfrbivbjmzebuya/Build/Products/Debug-iphonesimulator/ReadingList.app/PlugIns/ReadingList_UnitTests.xctest/ReadingList_UnitTests,NSDebugDescription = dlopen_preflight(/ Users/andrewbennet/Library/Developer/Xcode /DerivedData/ReadingList-edsxqugqvkymbgfrbivbjmzebuya/Build/Products/Debug-iphonesimulator/ReadingList.app/PlugIns/ReadingList_UnitTests.xctest/ReadingList_UnitTests):找不到合适的图像.找到:/Users/andrewbennet/Library/Developer/Xcode/DerivedData/ReadingList-edsxqugqvkymbgfrbivbjmzebuya/Build/Products/Debug-iphonesimulator/ReadingList.app/PlugIns/ReadingList_UnitTests.xctest/ReadingList_UnitTests:mach-o,但不是为iOS模拟器构建的,NSBundlePath =/Users/andrewbennet/Library/Developer/Xcode/DerivedData/ReadingList-edsxqugqvkymbgfrbivbjmzebuya/Build/Products/Debug-iphonesimulator/ReadingList.app/PlugIns/ReadingList_UnitTests.xctest,NSLocalizedDescription =无法加载捆绑"ReadingList_UnitTests"因为它已损坏或缺少必要的资源.}
这条线mach-o, but not built for iOS simulator似乎很关键.我该如何解决这个问题?
在iOS 11中,当我锁定iPhone时,我的音乐应用程序会显示锁定屏幕控件.我能够看到当前播放的歌曲和播放/暂停向前和向后跳过.但是在升级到Xcode 10/iOS 12时,我再也看不到锁定屏幕只控制日期和时间......
但是,如果我向上滑动并获得小部件屏幕(您可以在其中打开飞行模式等),我可以看到正在播放的信息.
这就是我所拥有的
在背景模式中
我已将代码更新为以下内容:
叫我的 viewDidLoad
do {
try AVAudioSession.sharedInstance().setCategory(.soloAmbient, mode: .default, options: .allowAirPlay)
print("Playback OK")
try AVAudioSession.sharedInstance().setActive(true)
print("Session is Active")
} catch {
print(error)
}
UIApplication.shared.beginReceivingRemoteControlEvents()
self.becomeFirstResponder()
Run Code Online (Sandbox Code Playgroud)
我之前没有在上一个工作版本中使用以下代码,但我添加了它,因为我发现了类似的帖子,建议我这样做
if let songInfo = self.mediaPlayer.nowPlayingItem {
nowPlayingInfoCenter.nowPlayingInfo = [
MPMediaItemPropertyTitle: songInfo.title ?? "",
MPMediaItemPropertyArtist: songInfo.artist ?? "",
MPMediaItemPropertyArtwork : songInfo.artwork?.image(at: CGSize(width: 400, height: 400)) ?? #imageLiteral(resourceName: "emptyArtworkImage")]
}
Run Code Online (Sandbox Code Playgroud)
我把断点放在do try它上面不打印任何打印功能并跳过它try
我的代码转换错了吗?
我用如下参数创建了一个自定义Intent:
我捐了它:
let intent = PlayIntent()
intent.color = color
let interaction = INInteraction(intent: intent, response: nil)
interaction.donate()
Run Code Online (Sandbox Code Playgroud)
它显示正确:
但是,我想要一个接受用户输入的Intent.示例,Messages.app:
如何配置我的自定义Intent来处理输入?
ios12 ×10
ios ×8
swift ×2
xcode ×2
xcode10 ×2
avfoundation ×1
bearer-token ×1
ios10 ×1
ios11 ×1
objective-c ×1
safari ×1
sirikit ×1
version ×1
xcode12 ×1
xctest ×1