我可以选择进行迁移,但我更愿意删除defaultRealm()中的所有内容.我怎么能这么容易做到?
realm.deleteObject(object)
Run Code Online (Sandbox Code Playgroud)
是唯一与.deleteObjects一起使用的函数.
我试过以下代码:
方法1
realm.deleteObjects(RLMObject.objectsInRealm(realm, withPredicate: NSPredicate(value: true)))
Run Code Online (Sandbox Code Playgroud)
方法2
realm.deleteObjects(Dog.allObjectsInRealm(realm))
realm.deleteObjects(Person.allObjectsInRealm(realm))
realm.deleteObjects(Goal.allObjectsInRealm(realm))
realm.deleteObjects(Goals.allObjectsInRealm(realm))
Run Code Online (Sandbox Code Playgroud)
两者都无法阻止迁移异常.
我必须错误地使用自定义对象NSUserDefaults.错误"属性列表格式无效:200(属性列表不能包含'CFType'类型的对象)".下面是我的代码,目标类特别有意义,因为这是我采用NSCoding协议的地方.
这段代码是全球性的.
func saveGoals (goals : [Goal]) {
var updatedGoals = NSKeyedArchiver.archivedDataWithRootObject(goals)
NSUserDefaults.standardUserDefaults().setObject(updatedGoals, forKey: "Goals")
NSUserDefaults.standardUserDefaults().synchronize()
}
func loadCustomObjectWithKey() -> [Goal] {
if let encodedObject : NSData = NSUserDefaults.standardUserDefaults().objectForKey("Goals") as? NSData {
var encodedObject : NSData? = NSUserDefaults.standardUserDefaults().objectForKey("Goals") as? NSData
var goal : [Goal] = NSKeyedUnarchiver.unarchiveObjectWithData(encodedObject!) as [Goal]
return goal
} else {
return [Goal]()
}
}
Run Code Online (Sandbox Code Playgroud)
此代码位于GoalsViewController中.
class GoalsViewController: MainPageContentViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet var tableView: GoalsTableView!
var cell = GoalTableViewCell()
var goalsArray : Array<Goal> = [] //
override …Run Code Online (Sandbox Code Playgroud) 我有
var priority : Priority! = Priority.defaultPriority
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeInteger(priority.toRaw(), forKey: "priority") //toRaw may not yield the result I am expecting
}
required init(coder aDecoder: NSCoder) {
priority = aDecoder.decodeIntegerForKey("priority") //complaining about conflicting types
}
Run Code Online (Sandbox Code Playgroud)
枚举如下:
enum Priority : Int {
case defaultPriority = 0
case lowPriority = 1
case mediumPriority = 2
case highPriority = 3
}
Run Code Online (Sandbox Code Playgroud)
编码/解码这个的最佳方法是什么?
let frame = (info[UIKeyboardFrameEndUserInfoKey] as NSValue) as CGRect
Run Code Online (Sandbox Code Playgroud)
不起作用.有谁知道为什么这不能按预期运作?
错误:'NSValue'无法转换为'CGRect'
请记住以下内容:
let curve = (info[UIKeyboardAnimationCurveUserInfoKey] as NSValue) as UInt
Run Code Online (Sandbox Code Playgroud)
工作良好.
编辑:即使Apple文档表明这是一个小问题,因为Cocoa中有以下评论 UIKeyboardAnimationCurveUserInfoKey
// NSValue of CGRect
Run Code Online (Sandbox Code Playgroud)
Edit2:调试器将其定义为NSConcreteValue.如何将其转换为CGRect?
如何存储我在NSUserDefaults中创建的Goal类型的对象数组?(快速)
这是代码:
func saveGoalList ( newGoalList : [Goal] ){
let updatedGoalList = newGoalList;
NSUserDefaults.standardUserDefaults().setObject(updatedGoalList, forKey: "GoalList")
NSUserDefaults.standardUserDefaults().synchronize()
}
class GoalsViewController: MainPageContentViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet var tableView: GoalsTableView!
var cell = GoalTableViewCell()
var goalsArray : Array<Goal> = [] //
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.delegate = self
self.tableView.dataSource = self
if var storedGoalList: [Goal] = NSUserDefaults.standardUserDefaults().objectForKey("GoalList") as? [Goal]{
goalsArray = storedGoalList;
}
var goal = Goal(title: "Walk the Dog")
goalsArray.append(goal)
saveGoalList(goalsArray)
self.tableView?.reloadData()
tableView.estimatedRowHeight = 44.0
tableView.rowHeight = UITableViewAutomaticDimension
self.xpnotificationView.alpha = …Run Code Online (Sandbox Code Playgroud) self.descriptionTextView.textAlignment = NSTextAlignment.Center
println(self.descriptionTextView.textAlignment.rawValue)
Run Code Online (Sandbox Code Playgroud)
写
4
表示默认的textAlignment值(NSTextAlignment.Natural).
我在故事板中创建了UITextView,并使用右侧的按钮手动将对齐设置为Center.
当我运行应用程序时,文本继续来自左侧.
有人知道为什么会这样吗?
(我使用的是最新版本的XCode,使用UITextField时似乎没有这种情况)
我在故事板中有一个UICollectionViewCell,里面有一个UIImageView.
的UICollectionViewCell size is width: 189, height: 239.ImageView具有以下约束:
Trailing Space to cell = 31
Leading Space to cell = 31
Bottom Space to cell = 25
Top Space to cell = 31
Run Code Online (Sandbox Code Playgroud)
运行时收到以下错误:
2014-11-28 19:53:33.934 AppName [1585:35698]无法同时满足约束条件.可能至少下列列表中的一个约束是您不想要的约束.试试这个:(1)看看每个约束并试着找出你不期望的东西; (2)找到添加了不需要的约束或约束的代码并修复它.(注意:如果您看到不理解的NSAutoresizingMaskLayoutConstraints,请参阅UIView属性translatesAutoresizingMaskIntoConstraints的文档)(
"<NSLayoutConstraint:0x7fa4a0d75220 H:[UIImageView:0x7fa4a0d743e0]-(31)-| (Names: '|':UIView:0x7fa4a0d73d40 )>",
"<NSLayoutConstraint:0x7fa4a0d752c0 H:|-(32)-[UIImageView:0x7fa4a0d743e0] (Names: '|':UIView:0x7fa4a0d73d40 )>",
"<NSAutoresizingMaskLayoutConstraint:0x7fa4a0d567a0 h=--& v=--& H:[UIView:0x7fa4a0d73d40(50)]>" )
Run Code Online (Sandbox Code Playgroud)
将尝试通过破坏约束来恢复NSLayoutConstraint:0x7fa4a0d75220 H:[UIImageView:0x7fa4a0d743e0] - (31) - | (名称:'|':UIView:0x7fa4a0d73d40)>
在UIViewAlertForUnsatisfiableConstraints上创建一个符号断点,以便在调试器中捕获它.在列出的UIView上的UIConstraintBasedLayoutDebugging类别中的方法也可能有所帮助.
我尝试以各种方式更改前导/尾随值(尝试偶数/奇数)但没有成功.是什么造成的?