小编nhg*_*rif的帖子

嵌套字典转换为 json swift

我有一本需要转换为 Json 的字典。

[
    Dict1:1, 
    test: A Value, 
    NestedDict1:[
        city: A City Name, 
        address: An Address, 
        NestedDict2: [
            1: 1, 
            39: 2
        ],
        favorite1: 2, 
        favorite3: Chocolate
    ]
]
Run Code Online (Sandbox Code Playgroud)

当我使用

NSJSONSerialization.dataWithJSONObject(myJsonDict, options: NSJSONWritingOptions.PrettyPrinted, error: nil)
Run Code Online (Sandbox Code Playgroud)

它只编码最外面的字典。所以我的输出看起来像这样:

NSJSONSerialization.dataWithJSONObject(myJsonDict, options: NSJSONWritingOptions.PrettyPrinted, error: nil)
Run Code Online (Sandbox Code Playgroud)

我如何对内部字典进行 JSON 处理?

json dictionary swift

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

是否无法在不构建视图的情况下以编程方式创建 UIViewController?

我想以编程方式创建一个 UIViewController 。没有笔尖或故事板。它基本上会被创建然后呈现,并且在它自己的类中它将设置要显示的图像。

然而,每当我只是alloc init一个视图控制器并呈现它时,它呈现时就会显示为黑色。

我认为这是因为它缺乏自己的观点?

当我在 Storyboard 中创建原始文件时UIViewController,它会自动设置视图,如何设置视图,使其像 Storyboard 一样具有正确的设备大小、旋转变化等?

cocoa-touch uiviewcontroller uiview ios

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

Swift错误:不允许在顶层使用语句

我正在浏览Swift JSON解析的Argo文档(https://github.com/thoughtbot/Argo),它们提供了一个简单的代码段,该代码段应该检索JSON数据,但是运行它时出现错误。片段是:

// Wherever you receive JSON data:

let json: AnyObject? = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions(0), error: nil)

if let j: AnyObject = json {
  let user: User? = decode(j)
}
Run Code Online (Sandbox Code Playgroud)

和我得到的错误是“不允许在最高级别的声明”,在说如果让j ...

为什么这会导致错误?如果不起作用,为什么在他们的github自述文件中呢?

json swift

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

斯威夫特的因子

我需要一个很好的阶乘功能.我在这里写的那个完全有效,除非n太大了.这是一个计算器应用程序,我可以返回0/0的值不能被因素,因为我有一个错误检查器,将声明这是不可能的.但是,在非常大的数量上执行该功能会使应用程序崩溃.我不能使用范围运算符,因为我的类型是双精度数.

func factorial(n: Double) -> Double {
    if n >= 0 {
        return n == 0 ? 1 : n * self.factorial(n - 1)
    } else {
        return 0 / 0
    }
}
Run Code Online (Sandbox Code Playgroud)

做这个的最好方式是什么?

factorial swift

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

在应用程序的两种配色方案之间切换?

例如,我想要白天的所有视图(背景和标签)的浅色和晚上的深色.该应用程序将根据时间自动更改其颜色.此外,用户还可以在设置中切换到其他配色方案.这样做最有效的方法是什么?

开关中涉及多种颜色(背景和标签).

objective-c

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

下划线符号是否忽略或检查Swift中switch语句中的null?

我在Swift中有一个switch语句,如下所示:

switch tuple {
    case (let someObject, let current, nil):
        return true

    // Other cases...
}
Run Code Online (Sandbox Code Playgroud)

元组的类型的(SomeObject?, SomeObject, SomeObject?),和我说的英语是:匹配其中前两个元素的情况下为零,而第三个(可选的)零.

Xcode的7告诉我,因为我没有使用绑定someObjectcurrent,我应该用下划线代替它.但是如果我用下划线替换元组中的第一个元素,它是否也会匹配第一个元素为nil的情况,因为这_意味着编译器会忽略该值?对于第一个元素为零的情况,我有一个单独的案例.

为了记录,看起来我的代码仍然按照我的预期工作,但我想确定,我无法在任何地方找到任何文档.

switch-statement swift optional-binding

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

底部带有图像和标签的按钮

我想制作一个按钮,它的底部有一个图标和一个标签,如下所示:

在此处输入图片说明

什么是最好的方法来做到这一点?是否可以将图像视图对象和标签拖到按钮中?

interface-builder uibutton uikit ios

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

为什么此Swift`defer`语句不能按预期工作?

我试图理解该defer语句在Swift 2中的工作方式,因为我显然无法正确理解它。

我有一个postprocess()只应在view实例化时调用的方法:

internal func postprocess() {
    assert(self.node.isViewInstantiated()) // <- this is failing using the first method
    ...
}
Run Code Online (Sandbox Code Playgroud)

我最初试图这样称呼它:

public var view: UIView {
    get {
        if !node.isViewInstantiated() {
            defer {
                postprocess()
            }
        }
        return node.view // node.view getter creates view
    }
}
Run Code Online (Sandbox Code Playgroud)

但这引起了断言。当我将其更改为此时,它开始工作:

public var view: UIView {
    get {
        if node.isViewInstantiated() {
            return node.view
        } else {
            var result = node.view
            postprocess()
            return result
        }
}
Run Code Online (Sandbox Code Playgroud)

(因此请注意,这node.view是自我说明isViewIntantiated()。) …

swift

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

使用多任务处理时,如果视图大小更改,如何设置通知| 迅速

使用多任务在iPad上测试我的应用程序时,如果我更改了应用程序的大小,则需要调整集合视图单元格的大小,否则它们将不适合视图窗口。

我已经采取了一些措施,例如

  • 检测装置改变细胞的大小
  • 测量视图大小以确保单元格适合窗口
  • 如果用户更改设备方向,则添加观察者

一切都很好,但是当使用多任务处理或实际返回到全屏应用程序时实际更改窗口大小时,单元格大小不会改变并且看起来很不合适。直到通过切换方向或切换视图控制器强制这样做viewWillLoadviewDidLoad再次执行。

那么,如果view.frame大小发生变化,如何设置通知?

ipad ios split-screen-multitasking

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

致命错误:范围结束索引没有有效的后继

所以我在使用Switch语句时遇到问题,当我使用它时,我会在控制台中得到这个"致命错误:范围结束索引没有有效的继承者".

var ArrayBytes : [UInt8] = [48 ,48 ,48]
 var SuperArrayMensaje : Array = [[UInt8]]()
var num7BM : Array = [UInt8]()

    for var Cont27 = 0; Cont27 < 800; Cont27++ {

        ArrayBytesReservaSrt = String(Mensaje7BM[Cont27])

        switch Mensaje7BM[Cont27] {

        case 0...9 :
                     num7BM = Array(ArrayBytesReservaSrt.utf8)
                     ArrayBytes.insert(num7BM[0], atIndex: 2)

        case 10...99 :
                     num7BM = Array(ArrayBytesReservaSrt.utf8)
                     ArrayBytes.insert(num7BM[0], atIndex: 1)
                     ArrayBytes.insert(num7BM[1], atIndex: 2)

        case 100...255 : // --> THE problem is here "EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)"
                     num7BM = Array(ArrayBytesReservaSrt.utf8) 
                     ArrayBytes.insert(num7BM[0], atIndex: 0)
                     ArrayBytes.insert(num7BM[1], atIndex: 1)
                     ArrayBytes.insert(num7BM[2], …
Run Code Online (Sandbox Code Playgroud)

switch-statement fatal-error exc-bad-instruction swift

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