有NSUserDefaults的integerForKey:
,setInteger:forKey:
和stringForKey:
,但没有setString:forKey:
.
如何将字符串设置为NSUserDefaults?它有setObject:forKey:
但是,在Swift中,String是一个结构.可以setObject:forKey:
用来存储字符串吗?
我正在尝试使用@IBInspectable
在Interface Builder中编辑其属性来创建自定义UIViewController的框架.
public class BWWalkthroughPageViewController: UIViewController {
@IBInspectable public var speed: CGPoint = CGPointZero
@IBInspectable public var speedVariance: CGPoint = CGPointZero
@IBInspectable public var animationType: String = ""
@IBInspectable public var animateAlpha: Bool = false
}
Run Code Online (Sandbox Code Playgroud)
如果框架源代码位于示例应用程序项目中,则属性将出现在Attribute Inspector中,如下图所示,
但是如果我将构建的框架添加到我的应用程序项目中,则属性不会显示在检查器中.
是否可以在Interface Builder的构建框架中显示可检查的属性?如果可能的话,怎么样?
这是框架源代码,它是从非框架项目派生而来的. https://github.com/yoichitgy/BWWalkthrough/tree/support-carthage
有没有办法将Swift类型名称作为带有命名空间(或框架名称)的字符串?
例如,如果Foo.framework
有一个名为的类Bar
,我想得到类似的字符串"Foo.Bar"
.
以下只返回类名"Bar"
.
let barName1 = String(Bar.self) // returns "Bar"
let barName2 = "\(Bar.self)" // returns "Bar"
let barName3 = "\(Bar().dynamicType)" // returns "Bar"
Run Code Online (Sandbox Code Playgroud)
我还想将框架名称"Foo"
作为命名空间.
我有一个测试项目,我试图将参数传递给Swinject项目中的resolve方法.
这是我的Swinject故事板扩展文件中包含的示例.
import Swinject
extension SwinjectStoryboard {
class func setup() {
let mainDm = MainDM()
defaultContainer.register(MainDM.self) { _ in
mainDm
}
defaultContainer.registerForStoryboard(ViewController.self) { r, c in
c.dm = r.resolve(MainDM.self)
c.container = defaultContainer
}
defaultContainer.register(GetMessageAction.self) { _, delegate in
GetMessageAction(dm:mainDm, delegate: delegate)
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我的ViewController中,我正在尝试执行以下操作来解决GetMessageAction
@IBOutlet weak var myText: UILabel!
var dm:MainDM!
var container:Container!
override func viewDidLoad() {
super.viewDidLoad()
NSTimer.scheduledTimerWithTimeInterval(NSTimeInterval(3), target: self, selector: #selector(ViewController.getMessage), userInfo: nil, repeats: false)
}
func getMessage() {
let action:GetMessageAction? = container.resolve(GetMessageAction.self, argument: self)! …
Run Code Online (Sandbox Code Playgroud)