小编Mar*_*rte的帖子

Swift - 将Int转换为枚举:Int

我是Swift的新手(本周开始),我正在从Objective-C迁移我的应用程序.我在Objective-C中基本上有以下代码可以正常工作:

typedef enum : int {
    MyTimeFilter1Hour = 1,
    MyTimeFilter1Day = 2,
    MyTimeFilter7Day = 3,
    MyTimeFilter1Month = 4,
} MyTimeFilter;

...

- (void)selectFilter:(id)sender
{
    self.timeFilterSelected = (MyTimeFilter)((UIButton *)sender).tag;
    [self closeAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)

将它翻译成Swift时,我做了以下事情:

enum MyTimeFilter : Int {
    case OneHour = 1
    case OneDay = 2
    case SevenDays = 3
    case OneMonth = 4
}

...

@IBAction func selectFilter(sender: AnyObject) {
    self.timeFilterSelected = (sender as UIButton).tag as MyTimeFilter
    self.close(true)
}
Run Code Online (Sandbox Code Playgroud)

通过这样做,我得到错误:

'Int'不能转换为'MyTimeFilter'

我不知道如果我的做法(使用标签属性)是最好的,但无论如何,我需要做这样在我的应用程序不同的地方铸造的.有没有人知道如何摆脱这个错误?

谢谢!

xcode ios swift

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

如何在Swift中存储属性,就像我在Objective-C上一样?

我正在将一个应用程序从Objective-C切换到Swift,我有几个带有存储属性的类别,例如:

@interface UIView (MyCategory)

- (void)alignToView:(UIView *)view
          alignment:(UIViewRelativeAlignment)alignment;
- (UIView *)clone;

@property (strong) PFObject *xo;
@property (nonatomic) BOOL isAnimating;

@end
Run Code Online (Sandbox Code Playgroud)

由于Swift扩展不接受这些存储的属性,我不知道如何维护与Objc代码相同的结构.存储的属性对我的应用程序非常重要,我相信Apple必须在Swift中创建一些解决方案.

正如jou所说,我所寻找的实际上是使用关联对象,所以我做了(在另一个上下文中):

import Foundation
import QuartzCore
import ObjectiveC

extension CALayer {
    var shapeLayer: CAShapeLayer? {
        get {
            return objc_getAssociatedObject(self, "shapeLayer") as? CAShapeLayer
        }
        set(newValue) {
            objc_setAssociatedObject(self, "shapeLayer", newValue, UInt(OBJC_ASSOCIATION_RETAIN))
        }
    }

    var initialPath: CGPathRef! {
        get {
            return objc_getAssociatedObject(self, "initialPath") as CGPathRef
        }
        set {
            objc_setAssociatedObject(self, "initialPath", newValue, UInt(OBJC_ASSOCIATION_RETAIN))
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是在执行以下操作时我得到了EXC_BAD_ACCESS:

class UIBubble : UIView {
    required init(coder …
Run Code Online (Sandbox Code Playgroud)

ios associated-object swift

129
推荐指数
8
解决办法
10万
查看次数

iOS 7 - 禁用UITabBarItem色调

我有一个带有五个图标的UITabBar,其中大多数只有一种颜色是扁平的.但是,其中一个按钮不应该有色调,因为它是公司的徽标,徽标有各种不同的颜色.我知道有可能使用UINavigationBar和UIToolbar(这是我正在使用的,这是一个可怕的解决方法).

我做了一些沉重的搜索并尝试了许多不同的解决方案(我想出了一些疯狂的解决方案),但是它们似乎都不适用于iOS 7.有没有人知道如何实现这一目标?

太感谢了!

objective-c uitabbar ios ios7

12
推荐指数
2
解决办法
3664
查看次数

Swift - 奇怪的编码兼容错误

我遇到了问题,我在网上找不到其他人同样的斗争,也许这太傻了.

我有以下课程:

class UIXOColourPicker : UIView {
    @IBInspectable var moodValue: Int!
    ...
}
Run Code Online (Sandbox Code Playgroud)

在我的故事板中,我有一个像这样的观点:

在此输入图像描述

用户定义的运行时属性是由Xcode IBInspectable功能生成的(这真的很酷btw),但每当我尝试运行应用程序时,我都会收到错误

*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIXOColourPicker 0x7fa86877c420> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key moodValue.'

我在Xcode 6 - Beta 6上.

有任何想法吗?

对不起,如果这是一个愚蠢的问题,但我已经在努力了2个小时,我没有任何其他Swift开发人员来看看它.

干杯

xcode ios xcode-storyboard swift

9
推荐指数
2
解决办法
1818
查看次数

UITableView - cellForRowAtIndexPath延迟渲染

我有一个UITableView,它的单元格可能会根据每个上面显示的数据而有所不同,所以我有两个可重复使用的单元格,UIPendingXOCellUIXOCell.在某些时候,每UIPendingXOCell一个都成为一个UIXOCell.

有关上下文,请参阅下面的代码:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        var xoItem = self.xoForIndexPath(indexPath)
        var xoItemPFObject = xoItem.pfObject

        // If it's a pending XO
        if xoItemPFObject.objectId == nil {
            var cellIdentifier = "cell-pending-xo-list"
            var cell: UIPendingXOCell! = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as UIPendingXOCell!

            ...

            return cell
        }
        else {
            var cellIdentifier = "cell-xo-list"
            var cell: UIXOCell! = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as UIXOCell!

            ...

            return cell
        }
    }
Run Code Online (Sandbox Code Playgroud)

示例:我有一个包含5个对象的列表,在调用时.reloadData()生成1 UIPendingXOCell和4 UIXOCell(全部正常).我还有一个在后台运行的动作,它以一种方式改变对象,当我.reloadData() …

objective-c uitableview ios swift

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

Swift - 具有类型和协议的属性

在我的一个 Objective-C 类中,我有一个 type 属性,我UIViewController<UIProfileListHeaderDelegate>将如何在 Swift 中表示它?我需要从UIViewController和访问属性和方法UIProfileListHeaderDelegate

谢谢!

xcode ios swift

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