Ошибка компоновщика для приложения с проверкой и журналированием в приложенииIOS

Программируем под IOS
Ответить
Anonymous
 Ошибка компоновщика для приложения с проверкой и журналированием в приложении

Сообщение Anonymous »

Как новичок в Swift, я получаю следующую ошибку компоновщика в Xcode при запуске моего приложения:

Код: Выделить всё

ld: Undefined symbols:
os.Logger.logObject.getter : __C.OS_os_log, referenced from:
(1) suspend resume partial function for closure #1 @Sendable () async -> () in static godot_plugin.SwiftClass.launch_review_flow() -> () in InappReviewPlugin.a[4](SwiftClass.o)
(3) suspend resume partial function for closure #1 @Sendable () async -> () in static godot_plugin.SwiftClass.launch_review_flow() -> () in InappReviewPlugin.a[4](SwiftClass.o)
os.Logger.init() -> os.Logger, referenced from:
one-time initialization function for logger in InappReviewPlugin.a[4](SwiftClass.o)
type metadata accessor for os.Logger, referenced from:
one-time initialization function for logger in InappReviewPlugin.a[4](SwiftClass.o)
(1) suspend resume partial function for closure #1 @Sendable () async -> () in static godot_plugin.SwiftClass.launch_review_flow() -> () in InappReviewPlugin.a[4](SwiftClass.o)
Код Swift пытается запустить форму обзора в приложении с использованием платформы StoreKit: [Это часть плагина обзора в приложении для iOS для движка Godot >]

Код: Выделить всё

import Foundation
import SwiftUI
import OSLog
import StoreKit

@available(iOS 16.0, *)
extension UIApplication {
class func getTopViewController(base: UIViewController? = UIApplication.shared.windows.first { $0.isKeyWindow }?.rootViewController) -> UIViewController? {
if let nav = base as? UINavigationController {
return getTopViewController(base: nav.visibleViewController)

} else if let tab = base as? UITabBarController, let selected = tab.selectedViewController {
return getTopViewController(base: selected)

} else if let presented = base?.presentedViewController {
return getTopViewController(base: presented)
}
return base
}
}

@available(iOS 16.0, *)
extension UIViewController {
/// Request a App Store review from the user
///
/// - Parameters:
///     - delay: The number of seconds this function will wait before showing the modal.
func requestReview(delay: Double) {
Task {
// Use the equation n * 10^9 to convert seconds to nanoseconds.
try? await Task.sleep(nanoseconds: UInt64(delay * pow(10.0, 9.0)))
if let windowScene = self.view.window?.windowScene,
self.navigationController?.topViewController == self {
SKStoreReviewController.requestReview(in: windowScene)
}
}
}
}

@available(iOS 16.0, *)
@objcMembers public class SwiftClass : NSObject
{
static let logger = Logger()

static func launch_review_flow() {
Task {
logger.info("SwiftClass: launch_review_flow(): Task")
if let topVC = await UIApplication.getTopViewController() {
logger.info("SwiftClass: launch_review_flow(): Task: topVC")
await topVC.requestReview(delay: 1.5)
}
}
}
}
Я знаю, что это связано с регистраторами и частичными функциями вокруг операторов ожидания, но мои попытки исправить это не увенчались успехом.
Любая помощь будем признательны за решение этой проблемы.
Кроме того, мы будем очень признательны за любые предложения по оптимизации или исправлению связанных или несвязанных частей кода.

Подробнее здесь: https://stackoverflow.com/questions/783 ... nd-logging
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»