小编fun*_*ct7的帖子

如何使用递归定义在Swift中检查回文

我喜欢Swift的许多功能,但是使用操纵字符串仍然是一大难题。

func checkPalindrome(word: String) -> Bool {
    print(word)
    if word == "" {
        return true
    } else {
        if word.characters.first == word.characters.last {
            return checkPalindrome(word.substringWithRange(word.startIndex.successor() ..< word.endIndex.predecessor()))
        } else {
            return false
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

每当字符串的长度为奇数时,此代码都会失败。我当然可以这样做,所以该块的第一行是if word.characters.count < 2,但是Swift中有没有一种方法可以轻松获取子字符串并进行检查?

更新 我喜欢很多建议,但是我想原来的问题可能会误导人,因为这是关于String的问题,而不是为函数获取正确的结果。

例如,在Python中,checkPalindrome(word [1:-1])适用于递归定义,而Swift代码则不太优雅,因为它需要其他技巧。

recursion palindrome swift

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

Swift 3和iOS 10虚假内存泄漏错误

在使用iOS 10和Swift 3时,Xcode 8中似乎存在(错误的)内存泄漏错误.

以下代码报告了Instruments和Xcode 8内存调试器中的内存泄漏:

class SomeClass: NSObject {
    var view: SomeView!

    deinit {
        print("SomeClass deinit")
    }
}

class SomeView: UIView {
    weak var reference: SomeClass?

    deinit {
        print("SomeView deinit")
    }
}

class ViewController: UIViewController {
    var someProperty: SomeClass?

    override func viewDidLoad() {
        super.viewDidLoad()

        let c = SomeClass()
        let v = SomeView()
        c.view = v
        v.reference = c

        someProperty = c
    }
}
Run Code Online (Sandbox Code Playgroud)

xcode memory-leaks swift3 ios10 xcode8

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

如何使用“| m -&gt; s”等理解 Haskell 类型类定义

我似乎找不到真正解释类型类定义| m -> s中含义的书籍MonadState

class Monad m => MonadState s m | m -> s where
  {- other stuff here -}
Run Code Online (Sandbox Code Playgroud)

我目前正在读的书解释了

类型s变量表示状态的类型。m它由该部分指定的monad 唯一确定| m -> s

但我不明白这到底是什么意思。

我的理解是,它m必须是带有Monad实例的某种类型,并且m具有它包含的值。这是否意味着所提供的单子s会出现m s在类型表达式中——即类似的东西return :: Monad m => s -> m s

haskell

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

ios 7.1 UITextField色彩在故事板中不会改变

直到iOS 7.0,文本字段色调颜色更改为您在故事板中设置的颜色.从iOS 7.1开始,除非以编程方式执行,否则不会更改.

这是一个错误吗?有人知道吗?

uitextfield tintcolor ios

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

当引用相同的变量时,Swift Array内存地址会发生变化

我正在学习Python,并希望确认Objective-C和Swift中的某种行为.

测试如下:

蟒蛇

def replace(list):
    list[0] = 3
    print(list)

aList = [1, 2, 3]
print(aList)
replace(aList)
print(aList)
Run Code Online (Sandbox Code Playgroud)

Objective-C的

- (void)replace:(NSMutableArray *)array {
    array[0] = @1;
    NSLog(@"array: %@, address: %p\n%lx", array, array, (long)&array);
}

NSMutableArray *array = [@[@1, @2, @3] mutableCopy];
NSLog(@"original: %@, address: %p \n%lx", array, array, (long)&array);
[self replace:array];
NSLog(@"modified: %@, address: %p \n%lx", array, array, (long)&array);
Run Code Online (Sandbox Code Playgroud)

迅速

var numbers = [1, 2, 3]
let replace = { (var array:[Int]) -> Void in
    array[0] = 2
    print("array: \(array) address:\(unsafeAddressOf(array …
Run Code Online (Sandbox Code Playgroud)

pointers memory-address ios swift

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

Firebase函数SDK 1.0.0 storage.onFinalize()无法正常工作

我使用Firebase函数检测到存储的上载事件,并将下载URL写入数据库,如下所示:

exports.processFile = functions.storage.object().onChange((event) => {
  const object = event.data,
        filePath = object.name;

  if (object.resourceState === 'exists') {
    // Do something
  }
}
Run Code Online (Sandbox Code Playgroud)

收到有关SDK 1.0的电子邮件时,我像这样更新了功能:

exports.processFile = functions.storage.object().onFinalize((object, context) => {
  const filePath = object.name;

  if (object.resourceState === 'exists') {
    // Do something
  }
}
Run Code Online (Sandbox Code Playgroud)

更新后,功能中断,因此我决定resourceState在日志中打印并得到一个undefined。到底是怎么回事?

firebase google-cloud-functions

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

AVAudioEngine同步用于MIDI播放和录制

问题1 我的第一个问题是将an AVAudioPlayerNode和an AVAudioSequencer用于MIDI 时的播放同步。基本上,我试图通过MIDI播放某些东西,但是它们需要完全同步。

我知道AVAudioPlayerNodes 有同步方法,但是音序器似乎没有这样的东西。

目前,我已经尝试在单独的线程上使用CAMediaTime() + delayusleep,但是它们似乎不能很好地工作。

问题2我正在使用上的水龙头engine.inputNode来获取录音,与音乐播放分开。但是,录音似乎开始得较早。当我将记录的数据与原始播放进行比较时,相差大约300毫秒。我可以在300毫秒后开始记录,但是即使那样,也不能保证精确的同步,并且可能与机器有关。

所以我的问题是,什么是确保在播放开始时准确开始录制的好方法?

avfoundation ios swift avaudioengine avaudioplayernode

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

使用扩展中的键对Swift字典进行访问

事实证明,在Dictionary扩展中,下标因为说是非常没用Ambiguous reference to member 'subscript'。看来我要么必须做Swift要做的事情,要么要subscript(Key)调用一个函数。有任何想法吗?

例如,

public extension Dictionary {
    public func bool(_ key: String) -> Bool? {
        return self[key] as? Bool
    }
}
Run Code Online (Sandbox Code Playgroud)

由于下标被认为是模棱两可的,因此将无法使用。

添加我的误解来自以下事实:我认为这KeyAssociatedType一个通用参数,而不是通用参数。

extension-methods dictionary hashtable subscript swift

0
推荐指数
1
解决办法
447
查看次数