我得到一个错误,我的班级不符合NSObjectProtocol,我不知道这意味着什么.我已经实现了WCSessionDelegate的所有功能,所以这不是问题.有人知道问题是什么吗?谢谢!
import Foundation
import WatchConnectivity
class BatteryLevel: WCSessionDelegate {
var session: WCSession? {
didSet {
if let session = session {
session.delegate = self
session.activate()
}
}
}
var batteryStatus = 0.0;
func getBatteryLevel(){
if WCSession.isSupported() {
// 2
session = WCSession.default()
// 3
session!.sendMessage(["getBatteryLevel": ""], replyHandler: { (response) -> Void in
if (response["batteryLevel"] as? String) != nil {
self.batteryStatus = (response["batteryLevel"] as? Double)! * 100
}
}, errorHandler: { (error) -> Void in
// 6
print(error)
})
}}
func …Run Code Online (Sandbox Code Playgroud) 如何将任何对象类型转换为字符串?
let single_result = results[i]
var result = ""
result = single_result.valueForKey("Level")
Run Code Online (Sandbox Code Playgroud)
现在我得到错误:无法将任何对象的类型值赋给string类型的值.
如果我投了它:
result = single_result.valueForKey("Level") as! String
Run Code Online (Sandbox Code Playgroud)
我收到错误:无法将'__NSCFNumber'(0x103215cf0)类型的值转换为'NSString'(0x1036a68e0).
我该如何解决这个问题?
当我尝试发送一些东西时,我得到WCSession没有被激活错误.我不知道我做错了什么.我已经测试过serval预制解决方案"必须"工作.但它在我的模拟器和物理设备上不起作用.
一些代码:
我的应用代表:
import UIKit
import CoreData
import WatchConnectivity
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, WCSessionDelegate {
var window: UIWindow?
func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : String]) -> Void) {
replyHandler(["message": "Hello Watch!"])
}
func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {
}
func sessionDidBecomeInactive(_ session: WCSession) {
}
func sessionDidDeactivate(_ session: WCSession) {
}
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch. …Run Code Online (Sandbox Code Playgroud) 我想在UIView中嵌入一个UIViewController.我想以编程方式创建它.我在故事板中创建了UIViewController.
我的代码创建一个空的UIView:
let myNewView=UIView(frame: CGRect(x: (0 + screenHeight / 2), y: leftView.frame.origin.y, width: screenHeight / 2, height: leftView.frame.height))
myNewView.backgroundColor=UIColor.lightGray
self.view.addSubview(myNewView)
Run Code Online (Sandbox Code Playgroud)
以及将UIViewController附加到视图的代码:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
var controller: UIViewController = storyboard.instantiateViewController(withIdentifier: "testView") as UIViewController
myNewView.addSubview(controller.view)
Run Code Online (Sandbox Code Playgroud)
这会在我的UIView中显示视图,但不会以正确的方式显示.UIView在这种情况下是512像素宽.虽然(嵌入式)UIViewcontroller认为是1024像素宽(全屏宽度).
如何修复嵌入视图从其父级(UIView)获取宽度和高度?
什么是"实时搜索功能"更有效?
在有一点延迟的键盘上是一个请求,记录在json中返回并且我以这种方式追加它们:
$.ajax({
type: "POST",
url: "/spares/search/getresults",
dataType: "json",
data: "val="+ searchval,
success: function(response){
if (response.error == false) {
$.each(response.result, function(index, value){
$(".choosCred").append("<tr class='productChoose'> <td class='hide'>"+ value.id +"</td> <td class='hide'>"+ prod_id +"</td> <td class='hide'>"+ article +"</td> <td>"+ value.cd_cred +"</td> <td >"+ value.name_org +"</td> <td >"+ value.quality +"</td> <td class='hide'>"+ article_description +"</td> <td>" + '<button type="button" id="add"class="btn-xs btn btn-info add">Add </button>' +"</td> </tr>");
});
}
}
});
Run Code Online (Sandbox Code Playgroud)
但我可以在php中生成完整的表,然后像这样追加它:
$.ajax({
type: "POST",
url: "/spares/search/getresults/",
data: "SearchTerm="+ searchValue,
success: function(response){
$(".products tbody").html(response).show();
} …Run Code Online (Sandbox Code Playgroud) 我想创建一个“一对多”(最多3个设备)webrtc安装程序。我有一台设备是我的主要设备。其他设备正在连接到该设备。您可以考虑一个健谈的对讲机。使用他们要连接的一台设备。
我有这段代码可以一对一连接。
import AVFoundation
import UIKit
import WebRTC
import SocketIO
import CoreTelephony
import ReachabilitySwift
let TAG = "ViewController"
let AUDIO_TRACK_ID = TAG + "AUDIO"
let LOCAL_MEDIA_STREAM_ID = TAG + "STREAM"
class ViewController: UIViewController, RTCPeerConnectionDelegate, RTCDataChannelDelegate {
var mediaStream: RTCMediaStream!
var localAudioTrack: RTCAudioTrack!
var remoteAudioTrack: RTCAudioTrack!
var dataChannel: RTCDataChannel!
var dataChannelRemote: RTCDataChannel!
var roomName: String!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
initWebRTC();
sigConnect(wsUrl: "http://192.168.1.69:3000");
localAudioTrack = peerConnectionFactory.audioTrack(withTrackId: AUDIO_TRACK_ID)
mediaStream …Run Code Online (Sandbox Code Playgroud) 我想在不同屏幕尺寸的设备上缩放视频流。发送者的视频大小也可能不同。
到目前为止我所拥有的代码:
public func videoView(_ videoView: RTCEAGLVideoView, didChangeVideoSize size: CGSize) {
// scale by height
let w = renderer.bounds.height * size.width / size.height
let h = renderer.bounds.height
let x = (w - renderer.bounds.width) / 2
renderer.frame = CGRect(x: -x, y: 0, width: w, height: h)
}
Run Code Online (Sandbox Code Playgroud)
渲染器是渲染视频的视图。它可以缩放,但方式不正确。视频有些部分丢失了,高度还好。但宽度被裁剪成我所理解的。
是否有可能实现一种在不损失宽高比的情况下全屏显示视频(在接收端)的解决方案?
我想在应用程序启动时获取所需的应用程序版本号。但是我拿不到正确的钥匙。
我有这个代码要获取。我使用观察单个事件是因为我使用这种方法来检查所需的应用程序版本号。此方法仅在应用开始进行检查时触发。
func getVersion(completionHandler: @escaping (Result<Any?>) -> ()) {
let ref: DatabaseReference! = Database.database().reference().child("version").child("IOS")
ref?.observeSingleEvent(of: .value , with: { snapshot in
if snapshot.exists() {
let recent = snapshot.value as! NSDictionary
print(recent)
}
})
}
Run Code Online (Sandbox Code Playgroud)
但它正在返回旧的结果?我已isPersistenceEnabled在我的Appdelegate.
这是数据库结构:
当我使用Database.database().reference().child("version").child("IOS").
snapshot.exists时我没有得到任何结果, 当我使用它时。
我以前拥有的是: - 版本 | IOS - 1.0
当我使用Database.database().reference().child("version"), namely {iOS => 1.0}. 我不明白,因为这是我的旧结构。
文件加载器对我来说无法正常工作,图像没有显示。我的图像正确放置在 dist/static/assets 文件夹中。所以没有问题。
这是我的配置:
test: /\.(png|jpg|gif|svg)$/,
use: [
{
loader: 'file-loader?hash=sha512&digest=hex&name=[hash].[ext]',
options: {
context: 'src',
name: '[name].[ext]',
publicPath : 'static/assets',
outputPath : 'static/assets'
}
}
]
Run Code Online (Sandbox Code Playgroud)
但是我源中的图像被转换为base64?但它们不起作用。
<img role="presentation" src="data:image/svg+xml;base64,bW9kdWxlLmV4cG9ydHMgPSAic3RhdGljL2Fzc2V0cy90d2l0dGVyLWljb24uc3ZnIjs=">
而图像在 /dist/static/assets 文件夹中保留其原始名称。如何让图像与文件加载器一起使用?
我使用以下代码构建一些容器:
version: '3'
services:
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: test
MYSQL_DATABASE: test
MYSQL_USER: test
MYSQL_PASSWORD: test
ports:
- "9906:3306"
web:
image: php:7.3-apache
container_name: php_web
depends_on:
- db
volumes:
- ./:/var/www/html/
ports:
- "8100:80"
Run Code Online (Sandbox Code Playgroud)
这就像一个魅力。我遇到的唯一问题是我需要 mysqli 模块。这个不包含在 php:7.3-apache 镜像中。
所以我尝试将其添加到 dockerfile 中:
FROM php:7.3-apache
RUN docker-php-ext-install mysqli
Run Code Online (Sandbox Code Playgroud)
那是行不通的。那么如何将 mysqli 模块添加到我的容器中呢?