小编Sha*_*des的帖子

类型'错误'不符合协议'RawRepresentable'

将我的游乐场代码更改为Swift 3,Xcode建议更改

enum Error: ErrorType {
    case NotFound
}
Run Code Online (Sandbox Code Playgroud)

enum Error: Error {
    case NotFound
}
Run Code Online (Sandbox Code Playgroud)

但现在我得到标题错误,我不知道如何使枚举符合该协议.

swift rawrepresentable

10
推荐指数
1
解决办法
8466
查看次数

Swift Array扩展用于标准偏差

我经常需要计算数值数组的均值和标准差.所以我为一些似乎有用的数字类型编写了一个小协议和扩展.如果我这样做有什么不妥,我只想反馈.具体来说,我想知道是否有更好的方法来检查类型是否可以转换为Double,以避免需要asDouble变量和init(_:Double)构造函数.

我知道允许算术的协议存在问题,但这似乎工作正常,使我无法将标准偏差函数放入需要它的类中.

protocol Numeric {
    var asDouble: Double { get }
    init(_: Double)
}

extension Int: Numeric {var asDouble: Double { get {return Double(self)}}}
extension Float: Numeric {var asDouble: Double { get {return Double(self)}}}
extension Double: Numeric {var asDouble: Double { get {return Double(self)}}}
extension CGFloat: Numeric {var asDouble: Double { get {return Double(self)}}}

extension Array where Element: Numeric {

    var mean : Element { get { return Element(self.reduce(0, combine: {$0.asDouble + $1.asDouble}) / Double(self.count))}}

    var sd : …
Run Code Online (Sandbox Code Playgroud)

arrays numeric mean deviation swift

8
推荐指数
3
解决办法
1715
查看次数

认为没有选择行号

我将数据从表视图控制器传递到详细信息视图.我尝试indexPath.row直接在我的prepareForSegue方法中使用,但它显示错误

使用未解析的标识符'indexPath'

因此,在搜索网络后,我设置了indexOfSelectedPerson赋值的变量indexPath.row.我在模拟器中运行应用程序时的问题是prepareForSegue获取初始值indexOfSelectedPerson(0),然后在我单击它之后获取所选行的值.因此,当我点击模拟器中的后退按钮并选择另一行时,详细视图会显示我上一次选择的行的信息.

import UIKit

class MasterTableViewController: UITableViewController {

    var people = []
    var indexOfSelectedPerson = 0

    override func viewDidLoad() {
        super.viewDidLoad()

        people = ["Bob", "Doug", "Jill"]
    }

    override func numberOfSectionsInTableView(tableView: UITableView?) -> Int {
       return 1
    }

    override func tableView(tableView: UITableView?, numberOfRowsInSection section: Int) -> Int {
        return people.count
    }

    override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {

        let cell = tableView!.dequeueReusableCellWithIdentifier("personCell", forIndexPath: indexPath) as UITableViewCell

        cell.text …
Run Code Online (Sandbox Code Playgroud)

segue swift xcode6 ios8

7
推荐指数
1
解决办法
2万
查看次数

在ViewController和TabBarController之间传递数据

我有几个问题.如何将数据(我在Alamofire请求完成后得到的)传递给TabBarController的一个子节点?

我遇到的第一个问题是我无法覆盖登录操作中的func prepareForSegue(当点击按钮时),它说我只能覆盖类成员.但是,如果我把功能放在IBAction之外,那么我将不会发送我需要的数据.

第二个问题是,当我将覆盖的函数放在IBAction之外时,代码看起来像这样:

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {

            let homeVC = segue.destinationViewController as HomeViewController
            homeVC.templateForCell = templates
        }
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我得到了错误:

无法将'UITabBarController'类型的值转换为HomeViewController'

(HomeViewController是我的目标视图,我应该从Alamofire传递数据).

uitabbarcontroller uiviewcontroller ios swift

6
推荐指数
1
解决办法
8094
查看次数

格式化未知数字的小数位数

我打印出一个我不知道的数字.在大多数情况下,数字是完整的或具有尾随.5.在某些情况下,数字以.25或.75结尾,很少这个数字到千分之一的地方.我如何具体检测最后一个案例?现在我的代码检测到一个整数(0位小数),正好是.5(1位小数),然后在所有其他方案中恢复到2个小数点,但是当它需要时我需要转到3.

class func getFormattedNumber(number: Float) -> NSString {

    var formattedNumber = NSString()

    // Use the absolute value so it works even if number is negative
    if (abs(number % 2) == 0) || (abs(number % 2) == 1) {  // Whole number, even or odd
        formattedNumber = NSString(format: "%.0f", number)
    }

    else if (abs(number % 2) == 0.5) || (abs(number % 2) == 1.5) {
        formattedNumber = NSString(format: "%.1f", number)
    }

    else {
        formattedNumber = NSString(format: "%.2f", number)
    }

    return formattedNumber …
Run Code Online (Sandbox Code Playgroud)

logic swift

5
推荐指数
1
解决办法
1909
查看次数

ARKit是否有前置摄像头支持?

我们如何使用ARCamera或可以访问前置摄像头图像,ARSCNView是否可以ARSCNView像摄像头一样进行录制?

ios swift arkit arscnview arcamera

5
推荐指数
2
解决办法
4886
查看次数

如何使用倒数计时器来停止游戏 - iOS [SWIFT] -

我的游戏应该在60年代后停止.但我的计时器代码没有任何反应.

var timer = NSTimer()
var counter:Int = 60
var labelCounter:SKLabelNode = SKLabelNode()
Run Code Online (Sandbox Code Playgroud)

这是我的GameScene类中的代码:

func startTimer()
{
    timer = NSTimer.scheduledTimerWithTimeInterval(1.0
        , target: self, selector: Selector("updateTimer:"), userInfo: nil, repeats: true)
}

func updateTimer(dt:NSTimer)
{
    counter--

    if counter == 0 {
        timer.invalidate()
        removeCountDownTimerView()
    } else{
        labelCounter.text = "\(counter)"
    }
}

func removeCountDownTimerView()
{
    scene.view.paused = true
}
Run Code Online (Sandbox Code Playgroud)

感谢您的见解 :-)

iphone timer ipad ios swift

4
推荐指数
1
解决办法
7854
查看次数

每天午夜运行代码

我想每天午夜更新状态。但计时器是按时间间隔的。如何按天设置间隔

var timer = Timer()

timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(timerAction), userInfo: nil, repeats: true)

// called every time interval from the timer
func timerAction() {

}
Run Code Online (Sandbox Code Playgroud)

macos timer swift

3
推荐指数
1
解决办法
1758
查看次数

我自己的自定义类中的扩展

我正在阅读另一个SO问题,Swift do-try-catch语法.在他的回答中,rickster为OP的自定义类创建了一个扩展.Konrad77评论说这是"保持代码清洁的绝佳方式".我尊重他们的知识,这让我相信我在自己的代码中错过了一点.

是否还有其他好处(除了清洁度)或为我创建的课程创建扩展的原因?我可以直接将相同的功能放入类中.如果我是唯一一个使用该课程的人,或者其他人将访问它,答案是否会改变?

swift

2
推荐指数
1
解决办法
704
查看次数

DispatchGroup.wait 不等待

我在理解或使用 Dispatchgroup 时遇到问题。我已经阅读了很多关于它们的内容,但是大多数示例/文档都非常模糊或与我想要做的不一样,但是每次我提到我的问题时,每个人都会说“使用调度组!”。

这是我想要做的(注意:顺序是至关重要的):

  • 发送蓝牙写入特性。
  • 设备接收值,并吐出一些东西作为响应
  • 读取蓝牙响应(通过读取特性)
  • 发送新的写入特性(不同的命令)
  • 设备收到 NEW 命令,吐出 NEW 数据响应

重复两次(总共 3 个命令,总共 3 个不同的响应)。


我的代码:

func tPodInitialSetUp()
    {
        print ("* * * * * BEGIN SET-UP * * * * *")
        let setupDispatchGroup = DispatchGroup()

        setupDispatchGroup.enter()
        self.writeValue(command: Data(CommandModeCmd)) //231: Put t-Pod in command mode, burst mode is OFF returns OK
        setupDispatchGroup.leave()

        setupDispatchGroup.wait()

        setupDispatchGroup.enter()
        deviceConnected?.readValue(for: deviceConnectedCh1n2Char!)
        print("Sent command 231: returned: \(receivedString1)")
        if receivedString1.lowercased() == "ok"
        {
            print("t-Pod burst mode is OFF")
        }
        setupDispatchGroup.leave()

        setupDispatchGroup.wait()

        setupDispatchGroup.enter()
        self.writeValue(command: Data(loadProbeCalCmd)) …
Run Code Online (Sandbox Code Playgroud)

xcode ios bluetooth-lowenergy swift

2
推荐指数
1
解决办法
6565
查看次数