我试图在手机IOS 13 Beta上从Xcode11 beta构建我的应用程序。加载应用程序时发生崩溃。
2019-07-22 13:58:12.910460 + 0300 GoodWine [3738:792501] [错误]错误:此应用程序中的一个或多个模型使用的可变形属性的变压器名称未设置或设置为NSKeyedUnarchiveFromDataTransformerName。请改用“ NSSecureUnarchiveFromData”或NSSecureUnarchiveFromDataTransformer的子类。在某些时候,当指定nil时,Core Data将默认使用“ NSSecureUnarchiveFromData”,并且包含不支持NSSecureCoding的类的可转换属性将变得不可读。
CoreData:错误:此应用程序中的一个或多个模型正在使用可变形的属性,且其变压器名称未设置或设置为NSKeyedUnarchiveFromDataTransformerName。请改用“ NSSecureUnarchiveFromData”或NSSecureUnarchiveFromDataTransformer的子类。在某些时候,当指定nil时,Core Data将默认使用“ NSSecureUnarchiveFromData”,并且包含不支持NSSecureCoding的类的可转换属性将变得不可读。
2019-07-22 13:58:12.910595 + 0300 GoodWine [3738:792501] [错误] CoreData:此应用程序中的一个或多个模型使用的可变形属性的变压器名称未设置或设置为NSKeyedUnarchiveFromDataTransformerName。请改用“ NSSecureUnarchiveFromData”或NSSecureUnarchiveFromDataTransformer的子类。在某些时候,当指定nil时,Core Data将默认使用“ NSSecureUnarchiveFromData”,并且包含不支持NSSecureCoding的类的可转换属性将变得不可读。
CoreData:警告:实体“ SFMCKeyValueEntity”上的属性“值”正在使用nil或不安全的NSValueTransformer。请改用“ NSSecureUnarchiveFromData”或NSSecureUnarchiveFromDataTransformer的子类。
我有与 APNS 设备令牌相关的问题。在我使用 Xcode 10.2 和 iOS 12.1 之前。此时我曾经在委托方法中获取设备令牌
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
Run Code Online (Sandbox Code Playgroud)
我正在像这样注册 APNS,它运行良好。
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
center.delegate = self;
[center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error){
if(!error){
[[UIApplication sharedApplication] registerForRemoteNotifications];
}
}];
Run Code Online (Sandbox Code Playgroud)
现在,当将 iOS 13 安装到我的 iPhone 设备并使用 Xcode 11 时,不会调用委托方法 didRegisterForRemoteNotificationsWithDeviceToken。无法理解这个问题。我已经对此进行了研究,我知道从委托方法获取令牌有一些变化,但在我的情况下,委托方法甚至没有被调用。同样,它在 iOS 12 上运行良好。
我正在尝试在我的 Xcode 项目中添加对本地 swift 包的依赖。(我不想使用文件 url 添加依赖项,file://me/dev/app/package因为这无法共享到其他环境)
我试图将包拖放到目标上。这会创建对项目中包的引用,我能够在“链接二进制与库”构建阶段添加该包,但仍未找到该库。
No such module 'Analytics'
Run Code Online (Sandbox Code Playgroud)
我原来的配置
拖放后
这是我的包配置:
// swift-tools-version:5.1
import PackageDescription
let package = Package(
name: "Analytics",
products: [
.library(name: "Analytics", targets: ["Analytics"]),
],
dependencies: [
.package(path: "../SomeOtherPackage"),
],
targets: [
.target(name: "Analytics", dependencies: [
"SomeOtherPackage",
]),
]
)
Run Code Online (Sandbox Code Playgroud)
我还在目标链接的二进制文件和/或捆绑资源和/或编译源中包含了包,但无济于事:
这是我正在尝试的一个简单示例:https : //github.com/gsabran/SPM_Xcode_test
我不确定这是否是我们生活在这个勇敢的新 SwiftUI 世界中的反模式,但基本上我有一个 @EnvironmentObject,其中保存了一些基本的用户信息,我的视图可以调用。
我还有一个@ObservedObject,它拥有此视图所需的一些数据。
当视图出现时,我想使用@EnvironmentObject 来初始化@ObservedObject:
struct MyCoolView: View {
@EnvironmentObject userData: UserData
@ObservedObject var viewObject: ViewObject = ViewObject(id: self.userData.UID)
var body: some View {
Text("\(self.viewObject.myCoolProperty)")
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,在初始化之前,我无法在环境变量上调用 self :
“不能在属性初始值设定项中使用实例成员‘userData’;属性初始值设定项在‘self’可用之前运行。”
我可以看到一些可能的前进路线,但它们都感觉像是黑客。我应该如何处理这个问题?
如何在SwiftUI中以横向模式预览设备?
我只有一个简单的预览,像这样:
struct ContentView_Previews : PreviewProvider {
static var previews: some View {
ContentView()
}
}
Run Code Online (Sandbox Code Playgroud) 我在Xcode 11中有一个项目,向其中添加了Swift Package Manager依赖项。现在,我意识到我不再需要以前添加到项目中的程序包依赖项之一。
正如您在下面看到的那样,File > Swift Packages该项目下没有任何选项可从Swift Package Manager删除打包程序。
我试图从project.xcworkspace/xcshareddata/swiftpm/Package.resolved文件中的数组中删除包。但是它仍然没有将其从Xcode中删除,并且下次我将Updaate to Latest Package Versions其读取到Package.resolved文件中时。
如何在项目中删除Swift Package Manager依赖项?
从Xcode 10切换到11之后,我无法在任何设备上安装我的应用
安装成功后启动时的错误提示:安装成功,但在设备上找不到应用程序。
详细说明:
无法找到已安装的应用程序域:com.apple.platform.iphoneos代码:-1恢复建议:安装成功,但在设备上找不到该应用程序。bundleId = myBundleId
-多次查找尝试后,已安装应用程序的数据库中不存在已安装应用程序。域:com.apple.platform.iphoneos
但是,一切在模拟器上都可以正常工作。我试图删除派生数据,清理项目,删除应用程序..
非常奇怪:将应用提交测试后,我可以下载它并且可以正常工作。但是,当我为Xcode构建新应用程序时,它将启动仅从tesflight下载的应用程序,而不是通过Xcode推送的版本。
所以我的朋友从OneSignal收到了这封电子邮件
由于即将到来的iOS 13版本可能会发生更改,因此在使用Xcode 11构建应用程序之前,必须先更新到最新版本的iOSSDK。OneSignal的所有包装SDK(包括React Native,Unity和Flutter)都已经过也更新了。原因是与iOS 13一起发布的Xcode 11打破了OneSignal之类的应用程序和库用于获取设备推送令牌的通用技术。如果您不使用我们的新SDK,那么新用户将无法从您的应用订阅通知。
我对此感到好奇。
这是我们在iOS 12上获取设备通知令牌的方式
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
var token = ""
for i in 0..<deviceToken.count {
token = token + String(format: "%02.2hhx", arguments: [deviceToken[i]])
}
print("Notification token = \(token)")
}
Run Code Online (Sandbox Code Playgroud)
在iOS 13上获取它的正确方法是什么?我应该为当前开发的应用程序采用新方法还是旧方法仍然可行?