小编mal*_*lef的帖子

swift:修改字典中的数组

如何轻松地将元素添加到字典中的数组?它总是抱怨could not find member 'append'could not find an overload for '+='

var dict = Dictionary<String, Array<Int>>()
dict["key"] = [1, 2, 3]

// all of these fail
dict["key"] += 4
dict["key"].append(4) // xcode suggests dict["key"].?.append(4) which also fails
dict["key"]!.append(4)
dict["key"]?.append(4)

// however, I can do this:
var arr = dict["key"]!
arr.append(4) // this alone doesn't affect dict because it's a value type (and was copied)
dict["key"] = arr
Run Code Online (Sandbox Code Playgroud)

如果我只是将数组分配给var,修改它然后重新分配给dict,我不会复制所有内容吗?这不会有效也不优雅.

arrays syntax dictionary swift

27
推荐指数
3
解决办法
2万
查看次数

Swift iOS playground:发送延迟道具时出错

使用iOS游乐场设置如下:

import UIKit
import SpriteKit
import XCPlayground

let s = CGSize(width: 300, height: 300)
let f = CGRect(origin: CGPointZero, size: s)
let view = SKView(frame: f)
let scene = SKScene(size: s)
scene.backgroundColor = SKColor.redColor()
view.presentScene(scene)
XCPShowView("main view", view)
Run Code Online (Sandbox Code Playgroud)

我在控制台中得到这个:

2014-09-04 17:02:13.358 SpriteKitBETA7[2009:20695] Error sending deferral props: 0x10000003
Run Code Online (Sandbox Code Playgroud)

助手编辑器中有一个"主视图"框,但它不显示任何内容.这个完全相同的代码(import Cocoa而不是import UIKit)在OSX操场上完美运行.我知道我可以在OSX游乐场测试一些东西(虽然在iOS上更方便,因为我不想使用Yosemite,但我确实有iOS7 SDK)并且复制粘贴到我的项目中,但是我想知道是否有人理解这里发生了什么.

xcode ios sprite-kit swift swift-playground

19
推荐指数
2
解决办法
6103
查看次数

javascript中的数组的unique()

众所周知,没有内置函数可以在javascript中从数组中删除重复项.我注意到这也缺少jQuery(它只有DOM选择的独特功能),我发现的最常见的片段检查整个数组及其中每个元素的一个子集(我认为效率不高),如:

for (var i = 0; i < arr.length; i++)
    for (var j = i + 1; j < arr.length; j++)
        if (arr[i] === arr[j])
            //whatever
Run Code Online (Sandbox Code Playgroud)

所以我自己做了:

function unique (arr) {
    var hash = {}, result = [];
    for (var i = 0; i < arr.length; i++)
        if (!(arr[i] in hash)) { //it works with objects! in FF, at least
            hash[arr[i]] = true;
            result.push(arr[i]);
        }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有任何其他算法被认为是最适合这种情况的(或者如果你看到任何明显的缺陷可以修复),或者,当你在javascript中需要它时你会做什么(我知道jQuery不是只有框架和其他一些可能已经涵盖了这一点).

javascript arrays algorithm unique

10
推荐指数
3
解决办法
2万
查看次数

swift:if-let并行赋值

我正在尝试使用多个值创建一个简单的if-let语句.if只有当所有可选变量都是非零时,才应执行该块,并且应将它们分配给仅存在于if块内的新let-vars(常量?),就像正常的单赋值if-let一样.

var a: String? = "A"
var b: String? // nil

if let (m, n) = (a, b) {
    println("m: \(m), n: \(n)")
} else {
    println("too bad")
}
// error: Bound value in a conditional binding must be of Optional type
// this of course is because the tuple itself is not an Optional
// let's try that to be sure that's the problem...

let mysteryTuple: (String?, String?)? = (a, b)
if let (m, n) …
Run Code Online (Sandbox Code Playgroud)

tuples parallel-assignment optional-values swift swift-playground

6
推荐指数
2
解决办法
7599
查看次数

UIView的最简单(矩形)投影

我已经看过很多片段:对于像阴影这样简单的东西来说太复杂了,需要子类化UIView和使用quartz2d调用,否则我无法让它们工作.

我只是想在一个视图上做这个我作为子视图添加到另一个视图(子视图取自另一个viewController我只是分配 - 我知道这可能不太好但是很好),没有IB或任何东西.什么是最简单/最容易接受的方式?如果我想让它在iOS 4上运行会有所不同吗?

cocoa shadow uiview ios

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

主线程上来自 HTML 的 NSAttributedString 表现得好像多线程

我正在将一些 HTML 转换NSAttributedString为主线程上的an (Apple 告诉您的方式)。这需要一些时间,然后它会继续执行块的其余部分。

现在,如果另一个块也排队在线程中运行(例如在从 HTTP 请求获得响应之后),我希望它其他所有事情都完成,但事实并非如此:它们并行运行,好像他们在不同的线程上。我确实在各处放置了断言,以确保它在主线程上。

我做了一个实验“单视图应用程序”项目来测试这个,文件包含一个很长的 html 字符串<p>lorem</p> ipsum <b>dolor</b> <i><u>sit</u> amet</i>和一个带有以下代码的视图控制器:

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        dispatchStuff()
        for _ in 0..<10 {
            // slowOperation()
            parseHTML()
        }
    }

    func dispatchStuff() {
        for i in 0..<10 {
            let wait = Double(i) * 0.2
            DispatchQueue.main.asyncAfter(deadline: .now() + wait) {
                assert(Thread.isMainThread, "not main thread!")
                print(" dispatched after \(wait) seconds")
            }
        }
    }

    // just loads a …
Run Code Online (Sandbox Code Playgroud)

html concurrency multithreading nsattributedstring swift

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