Ios SKScene和URLQueryItems在Swift3中?

Ios SKScene和URLQueryItems在Swift3中?,ios,swift,swift3,sprite-kit,imessage-extension,Ios,Swift,Swift3,Sprite Kit,Imessage Extension,好的,我不熟悉URL查询和Swift的整个方面,需要帮助。目前,我有一个iMessage应用程序,其中包含和SKScene。为了让用户轮流玩游戏,我需要在1个会话内来回发送游戏消息,正如我在这里学到的: 到目前为止,我的场景都正常工作了,但是我对苹果的冰激凌演示倾注了大量精力,他们在演示中来回发送不断制作的冰激凌,我不知道如何查询场景中的所有内容,以便发送场景 我不清楚URLQueryItems是如何工作的,因为文档与sprite工具包场景无关 苹果询问他们的冰淇淋当前状态如下: ini

好的,我不熟悉URL查询和Swift的整个方面,需要帮助。目前,我有一个iMessage应用程序,其中包含和SKScene。为了让用户轮流玩游戏,我需要在1个会话内来回发送游戏消息,正如我在这里学到的:

到目前为止,我的场景都正常工作了,但是我对苹果的冰激凌演示倾注了大量精力,他们在演示中来回发送不断制作的冰激凌,我不知道如何查询场景中的所有内容,以便发送场景

我不清楚URLQueryItems是如何工作的,因为文档与sprite工具包场景无关

苹果询问他们的冰淇淋当前状态如下:

    init?(queryItems: [URLQueryItem]) {
            var base: Base?
            var scoops: Scoops?
            var topping: Topping?

            for queryItem in queryItems {
                guard let value = queryItem.value else { continue }

                if let decodedPart = Base(rawValue: value), queryItem.name == Base.queryItemKey {
                    base = decodedPart
                }
                if let decodedPart = Scoops(rawValue: value), queryItem.name == Scoops.queryItemKey {
                    scoops = decodedPart
                }
                if let decodedPart = Topping(rawValue: value), queryItem.name == Topping.queryItemKey {
                    topping = decodedPart
                }
            }

            guard let decodedBase = base else { return nil }

            self.base = decodedBase
            self.scoops = scoops
            self.topping = topping
        }
    }

fileprivate func composeMessage(with iceCream: IceCream, caption: String, session: MSSession? = nil) -> MSMessage {
        var components = URLComponents()
        components.queryItems = iceCream.queryItems

        let layout = MSMessageTemplateLayout()
        layout.image = iceCream.renderSticker(opaque: true)
        layout.caption = caption

        let message = MSMessage(session: session ?? MSSession())
        message.url = components.url!
        message.layout = layout

        return message
    }
}

但是我找不到如何查询场景。我怎样才能来回发送一个场景?这是可能的吗?

您不需要来回发送SKScene:您需要做的是发送与游戏设置相关的信息,例如圈数、轮到谁或其他任何信息,作为您的应用程序在另一端可以访问以构建场景的信息

如果不知道更多关于你的场景是如何设置的,以及它如何与为其他玩家的会话接收到的信息交互,我就不能告诉你很多细节。但是,如果使用URLQueryItems传递信息,您需要做的是检索场景中的查询项列表并根据接收到的值设置场景

如果您对如何实现这一点有具体问题,如果您共享整个项目,或者发布相关代码,说明您从一个玩家那里发送消息,以及另一个玩家如何接收信息并设置场景,我或其他人应该能够提供帮助


此外,如果您查看上面发布的代码中的composeMessage,您将看到在特定的代码示例中,场景/游戏信息是如何发送给其他用户的。在流程的另一端,将对接收到的消息的URL参数进行分解,以获得各种查询项的值,然后根据这些值设置场景。看看这是如何完成的,以确定场景应该如何设置。

谢谢,是的,我已经知道了,但现在遇到了问题,因为您只能存储字符串。。你能看一下吗?很高兴能帮上忙:我也回答了你的另一个问题。希望这有助于。。。