我目前正在尝试将自定义Swift类保存到NSUserDefaults.这是我的Playground的代码:
import Foundation
class Blog : NSObject, NSCoding {
var blogName: String?
override init() {}
required init(coder aDecoder: NSCoder) {
if let blogName = aDecoder.decodeObjectForKey("blogName") as? String {
self.blogName = blogName
}
}
func encodeWithCoder(aCoder: NSCoder) {
if let blogName = self.blogName {
aCoder.encodeObject(blogName, forKey: "blogName")
}
}
}
var blog = Blog()
blog.blogName = "My Blog"
let ud = NSUserDefaults.standardUserDefaults()
ud.setObject(blog, forKey: "blog")
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,我收到以下错误
执行被中断,原因:信号SIGABRT.
在最后一行(ud.setObject...)
在带有消息的应用程序中,相同的代码也会崩溃
"属性列表格式无效:200(属性列表不能包含'CFType'类型的对象)"
有人可以帮忙吗?我在Maverick上使用Xcode 6.0.1.谢谢.
我正在使用UITableView与静态单元格分组的选项屏幕/场景.一切都在使用Autolayout在Xcode 6.1/iOS 8.1.x/Storyboard中完成.在表组中有混合类型的单元格,有两种类型会导致我出现问题:
在单元格#1上,我可以为标签和前导容器之间的左边距设置约束.在单元#2上,据我所知,我无法在Interface Builder中设置任何约束.我在单元格#1中的标签上设置了左边距,因此它与单元格#2中的标签对齐.iPhone上的一切看起来都不错,但是如果我在iPad上显示相同的表格,其中表格视图的容器大小是屏幕大小的一半,则单元格#2获得更多边距(动态?),而单元格#1保持绝对边距I在约束中设置.我还尝试使用属性"相对于边距"更改单元格#1中的左边距,但无效.
苹果手机:

iPad(桌面宽度= 1/2屏幕尺寸)

所以问题是:如何在单元格#1中设置标签的约束,使其与单元格#2对齐.
这里还有一个Xcode 6.1示例项目的链接,用于演示该问题.在iPhone和iPad上运行以查看差异:
https://dl.dropboxusercontent.com/u/5252156/Code/tableViewTest.zip
这个问题可能与iPhone和iPad的布局静态表格单元格有关,但iOS 8也可能有所不同,因为现在一切都应该是自适应的.这就是我决定发布这个问题的原因.
假设我有一个带有一些可选属性的数据模型.这可以是例如具有"firstname","lastname"和可选的"website"属性的用户对象.
在Cloud Firestore中,只有具有已知网站的用户文档才会设置"网站"属性,对于所有其他用户文档,此属性将不存在.
我现在的问题是如何在没有 "网站"属性的情况下查询所有用户文档.
谢谢.
我正在寻找在UILabel右侧创建向下箭头(插入符号?)的最佳方法,该视图以UINavigationItem为中心.
整个过程看起来应该像iOS 9音乐应用程序中的下降.标签的文本将在运行时更改,标签的标题/文本(包括箭头)应居中,如此屏幕截图所示:
目前我\u{25BE}在文本的末尾附加一个字符,如下所示:
self.lblSelectedAlbum.text = self.lblSelectedAlbum.text! + " \u{25BE}"
Run Code Online (Sandbox Code Playgroud)
但这有几个负面影响:
关于如何实现这一目标的任何想法?谢谢!
我刚刚将Swift 3.1项目从Xcode 8.3.3迁移到Swift 4/Xcode 9 GM.我设法解决了大多数编译器警告,但是这个警告,我找不到任何与此相关的信息.代码在Xcode 8.3.3中编译时没有警告.我正在使用代码片段来说明问题.
警告确切的警告是
FirebaseArrayDelegate.swift:22:26:
Redundant conformance constraint 'T': 'FirebaseModel'
Run Code Online (Sandbox Code Playgroud)
并涉及func initialized(第三行)的声明.
public protocol FirebaseArrayDelegate: class {
func update(with block: (()->Void)?)
func initialized<T : FirebaseModel>(array: FirebaseArray<T>)
func added<T : FirebaseModel>(child: T, at index: Int)
func changed<T : FirebaseModel>(child: T, at index: Int)
func removed<T : FirebaseModel>(child: T, at index: Int)
func moved<T : FirebaseModel>(child: T, from oldIndex: Int, to newIndex: Int)
func changedSortOrder()
func cancelled(with error: Error)
}
Run Code Online (Sandbox Code Playgroud)
FirebaseModel定义为
public protocol FirebaseModel: AnyObject, Equatable …Run Code Online (Sandbox Code Playgroud) 我在操场(Xcode 9.0.1)中有以下代码:
import MapKit
enum Test: UInt {
case first
case second
case third
}
let test = Test(rawValue: 4) as Any
print(test) // nil
let type = MKMapType(rawValue: 999)
print(type == nil) // false
print(type!.rawValue) // 999
Run Code Online (Sandbox Code Playgroud)
MKMapType 定义为
enum MKMapType : UInt
Run Code Online (Sandbox Code Playgroud)
由于 MKMapType 的最大值为 5,我希望枚举的初始值设定项失败并返回 nil。相反,它返回 999。我是否在这里错过了一些 ObjC/Swift 桥接,或者这可能是一个错误?
iOS 13progress在OperationQueue类中引入了该属性。同时,Apple 将operations和operationCount属性标记为已弃用,这表明它们不应再用于报告队列进度。
我的问题是我无法让该progress属性按照我期望的方式工作(这基本上是开箱即用的)。此外,我找不到有关此新属性的任何文档(除了它现在存在的文档)。
我试图让它在一个新的 SingleView 项目中工作,该项目UIProgressView在 main 上有一个UIViewController。该示例深受https://nshipster.com/ios-13/的启发。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var progressView: UIProgressView!
private let operationQueue: OperationQueue = {
let queue = OperationQueue()
queue.maxConcurrentOperationCount = 1
queue.underlyingQueue = .global(qos: .background)
return queue
}()
override func viewDidLoad() {
super.viewDidLoad()
self.progressView.observedProgress = operationQueue.progress
self.operationQueue.cancelAllOperations()
self.operationQueue.isSuspended = true
for i in 0...9 {
let operation = BlockOperation {
sleep(1)
NSLog("Operation …Run Code Online (Sandbox Code Playgroud) 我试图在Swift中计算2的第6个根,我找不到合适的函数.
这里有一篇名为" 如何找到值的第n个根? "的帖子,其中提出的解决方案是使用的
pow(2, (1/6))
Run Code Online (Sandbox Code Playgroud)
但我相信这不起作用,因为签名pow是
func pow(_ x: Decimal, _ y: Int) -> Decimal
Run Code Online (Sandbox Code Playgroud)
所以上面公式的结果是1而不是1.122462 ...作为(1/6)舍入到0.
iPhone计算器可以做到,所以必须有办法:)
谢谢!
swift ×6
ios ×2
autolayout ×1
enums ×1
firebase ×1
foundation ×1
ios13 ×1
mapkit ×1
margin ×1
nscoding ×1
progress-bar ×1
sigabrt ×1
square-root ×1
swift4 ×1
uikit ×1
uitableview ×1
xcode ×1