小编Bad*_*Cat的帖子

Swift Generic Array'不相同'错误

我刚刚经历了一些从Beta3开始显然已经过时的Swift tuts ......

func exchange<T>(data:[T], i:Int, j:Int)
{
    let temp = data[i];
    data[i] = data[j];
    data[j] = temp;
}
Run Code Online (Sandbox Code Playgroud)

游乐场告诉我:

错误:@lvalue $ T8与T不同.

如何更改它以使其工作?

arrays generics swift

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

NSContainerView在Xcode 6中具有多个子视图控制器

我正在尝试将Xcode 6故事板上的两个不同的视图控制器与链接起来,NSContainerView以便可以有条件地切换它们。不幸的是,这里的本教程没有任何帮助,因为自Xcode以来,情况似乎已发生变化。

因此,我有两个不同的视图控制器,默认情况下其中一个已加载到容器视图中,但是我希望能够以编程方式将第二个视图控制器加载到容器视图中。Xcode 6仅允许在我从一个拖动到另一个时创建嵌入Segues,所以并没有太大帮助。

有人可以告诉我Xcode 6是如何实现的吗?

macos cocoa nsviewcontroller xcode6

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

如何将Swift 4编码的JSON写入文件?

如何将通过Swift 4 Codable协议编码的JSON对象写入文件?斯威夫特4以前我用过的JSONSerialization.writeJSONObject,但JSONSerialization.isValidJSONObject现在返回false所创建的数据(或字符串).一个例子:

import Foundation

class Shark : Codable
{
    var name:String = ""
    var carnivorous:Bool = true
    var numOfTeeth:Int = 0
    var hobbies:[String] = []
}

class JSON
{
    class func encode<T:Encodable>(_ obj:T) -> String?
    {
        if let encodedData = try? JSONEncoder().encode(obj)
        {
            return String(data: encodedData, encoding: .utf8)
        }
        return nil
    }

    class func writeToStream(data:Any, path:String) -> Bool
    {
        var success = false
        if JSONSerialization.isValidJSONObject(data)
        {
            if let stream = OutputStream(toFileAtPath: "\(path)", append: …
Run Code Online (Sandbox Code Playgroud)

serialization json swift swift4 codable

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

离子模板内容未显示

我使用离子侧菜单和Angular状态机制使用Ionic进行了基本菜单导航,如http://joelhooks.com/blog/2013/07/22/the-basics-of-using-ui-所述router-with-angularjs /但当加载主页或单击任何菜单项时,页面的中心部分没有显示任何内容.这是简化的HTML ...

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
    <title></title>
    <link href="lib/ionic/css/ionic.css" rel="stylesheet">
    <link href="css/style.css" rel="stylesheet">
    <script src="lib/ionic/js/ionic.bundle.js"></script>
    <script src="cordova.js"></script>
    <script src="js/app.js"></script>
</head>
<body ng-app="testapp" ng-controller="MainCtrl">
    <ion-side-menus>

        <!-- Center content -->
        <ion-side-menu-content>
            <ion-header-bar class="bar-header">
                <button class="button button-icon" ng-click="toggleSideMenu()">
                    <i class="icon ion-navicon"></i>
                </button>
                <h1 class="title">Home</h1>
                <button class="button button-icon">
                    <i class="icon ion-star"></i>
                </button>
            </ion-header-bar>
        </ion-side-menu-content>

        <!-- Left menu -->
        <ion-side-menu side="left">
            <ion-list>
                <ion-item class="item item-icon-left" ng-repeat="item in menuItems" item="item" ng-click="enterState(item.id)">
                    <i class="{{item.icon}}"></i> …
Run Code Online (Sandbox Code Playgroud)

html javascript state angularjs ionic-framework

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

在设备轮换时重新定位UIPopoverController

我正在尝试在旋转设备时重新定位弹出窗口视图.我使用此代码创建弹出窗口:

        settingsViewCtrl = storyboard.instantiateViewControllerWithIdentifier("settingsViewCtrl") as SettingsViewCtrl;
        settingsPopoverCtrl = UIPopoverController(contentViewController: settingsViewCtrl);
        settingsPopoverCtrl.delegate = self;
        let m:CGFloat = min(view.frame.width, view.frame.height);
        let s:CGSize = CGSizeMake(m - 100, m - 100);
        let r:CGRect = CGRectMake(view.frame.width * 0.5, view.frame.height * 0.5, 1, 1);
        settingsPopoverCtrl.setPopoverContentSize(s, animated: true);
        settingsPopoverCtrl.presentPopoverFromRect(r, inView: view, permittedArrowDirections: nil, animated: true);
Run Code Online (Sandbox Code Playgroud)

willRepositionPopoverToRect在我的代表中使用......

func popoverController(popoverController:UIPopoverController!, willRepositionPopoverToRect rect:UnsafeMutablePointer<CGRect>, inView view:AutoreleasingUnsafeMutablePointer<UIView?>)
{
    if (settingsPopoverCtrl != nil && settingsViewCtrl != nil)
    {
        let r:CGRect = CGRectMake(self.view.frame.width * 0.5, self.view.frame.height * 0.5, 1, 1);
        settingsPopoverCtrl.presentPopoverFromRect(r, inView: …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch uipopovercontroller ios7 swift

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

Xcode 6 Beta7 NSDictionary到Swift

在从更新到Beta 7的大量错误中,我得到了这个让我头疼的特别之处......

        let views:NSDictionary =
        [
            "leftView": _leftVC.view,
            "rightView": _rightVC.view,
            "outerView": _scrollView.superview
        ];
Run Code Online (Sandbox Code Playgroud)

错误:无法将表达式'type'类型转换为'StringLiteralConvertible'类型需要'views'的方法需要一个NSDictionary,所以我不能只使用Swift Dictionary.

我如何调整上述代码以满足Xcode6 Beta7?

xcode ios swift

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

如何为Xcode 6创建自定义Swift文件模板?

我想制作一些Swift文件模板,我可以将其放入Xcode的文件模板选择器中.我知道如何使一个自定义模板,游乐场和对象 - 文件模板,但对于斯威夫特似乎有没有可用的文件模板都在以下路径:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File Templates/Source/
Run Code Online (Sandbox Code Playgroud)

这肯定应该是可能的,不应该吗?(或者每个应用程序开发人员都使用可怕的默认模板开始?)

我在路径下创建了一个新的模板文件夹

/Users/name/Library/Developer/Xcode/Templates/File Templates/User Templates
Run Code Online (Sandbox Code Playgroud)

名称Swift File.xctemplate和以下内容:

___FILEBASENAME___.swift
TemplateIcon.png
TemplateIcon@2x.png
TemplateInfo.plist
Run Code Online (Sandbox Code Playgroud)

当然还是相应地编辑了文件.当我打开Xcode的寺庙选择器时,我的模板出现但它不知何故无法正常工作.它还会打开一个文件浏览器并询问存储不正确的文件的位置,然后该文件不会出现在项目中.

这有什么解决方案吗?网络似乎没有这些信息.

xcode templates ios swift

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

在不同目标之间共享全局常数

我在一个项目中有一些全局常量:

// DemoACIs.swift
let DEMO_TEST_MENU_SCREEN_VIEW_ACI = "test_menu_screen_view"
let DEMO_TEST_MENU_SCREEN_TITLE_LABEL_ACI = "test_menu_screen_title_label"
let DEMO_TEST_MENU_SCREEN_BUTTON1_ACI = "test_menu_screen_button1"
etc.
Run Code Online (Sandbox Code Playgroud)

我想在Xcode的另一个基于Swift的目标(在这种情况下为UI测试目标)中引用它们...

// TestMenuScreenViewProxy.swift

import Foundation
import XCTest

class TestMenuScreenViewProxy
{
    internal var view:XCUIElement { return app.otherElements[DEMO_TEST_MENU_SCREEN_VIEW_ACI] }
    internal var titleLabel:XCUIElement { return app.textFields[DEMO_TEST_MENU_SCREEN_TITLE_LABEL_ACI] }
    internal var button1:XCUIElement { return app.buttons[DEMO_TEST_MENU_SCREEN_BUTTON1_ACI] }
}
Run Code Online (Sandbox Code Playgroud)

当然这是行不通的。在测试目标中找不到常数。我如何才能在目标中访问它们?

xcode constants ios swift

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

完全可点击的 NSComboBox?

在 Cocoa UI 控件中,我们有NSComboBox,我想知道是否可以将其设置为像 Apple 在 OSX 系统偏好设置中使用的“组合框”一样。这些是完全可点击的(而不仅仅是最右边的箭头部分),并且它们的外观和行为也略有不同(例如,它们延伸到底部和顶部)。

是否可以NSComboBox更改为这样的行为,或者这是苹果在那里使用的完全不同的控件?

macos user-interface cocoa nscombobox

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

在非测试目标中使用XCTest

我正在围绕XCTest编写一个可重用的框架,用于我们的几个项目的UI测试.为此,我创建了一个Cocoa Touch Framework项目,我想通过pod分享.

是否可以将XCTest包含在这样的项目中(没有额外的测试目标)?即使我已经XCTest.framework在构建阶段进行链接,我也会收到无法找到XCTest模块的错误.

xcode objective-c ios xctest swift

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