我正在开发一个资金跟踪器应用程序,我有两个不同的对象。一个是交易'其中包含发生的所有交易,第二个是“RecurringTransaction'其中包含所有定期交易。
我使用Recurring事务就像一个模板,其中包含创建事务所需的所有信息。我提供了清除交易的选项,因此一旦用户清除了定期交易,那么我只创建一个交易。我在我的应用程序中使用Realm。
这些是对象:
class Transaction: Object {
dynamic var id: String = UUID().uuidString
dynamic var title: String = ""
dynamic var amount: Double = 0
dynamic var createdAt: Date = Date()
dynamic var category: Category?
dynamic var recurringTransaction: RecurringTransaction?
dynamic var type: TransactionType = .Income
}
class RecurringTransaction: Object {
dynamic var id: String = UUID().uuidString
dynamic var title: String = ""
dynamic var amount: Double = 0
dynamic var createdAt: Date = Date()
dynamic var category: Category?
dynamic var type: TransactionType = .Income
dynamic var frequency: TransactionFrequency = .Monthly
}
这是正确的方法吗?正如您所看到的,两者都包含相似的属性,但同时两者都不同:一个是实际事务,另一个是模板。
还有一个问题,如果我使用coredata会有什么不同?因为我对coredata没有多少经验
答案 0 :(得分:0)
如果<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="effects.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<script
src="https://code.jquery.com/jquery-3.1.1.min.js"
integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8="
crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container-fluid">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#"><div class="glyphicon glyphicon-pencil"></div>
Rate Gitam</a>
</div>
<p class="navbar-text">Gitam university's first rating site</p>
</div><!-- /.navbar-collapse -->
</nav>
<div class="jumbotron">
<h1>Rate your professor</h1>
<p>Rate your professor and choice of your elective on a five point scale</p>
</div>
<div class="col">
<form class="form-horizontal ">
<div class="form-group">
<label for="inputEmail3" class="col-sm-2 control-label">Faculty Name</label>
<div class="col-lg-3">
<input type="text" class="form-control" id="inputEmail3" placeholder=" Faculty Name">
</div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-label">rating</label>
<div class="col-lg-3">
<input type="text" class="form-control" id="inputPassword3" placeholder="Rating">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default">Submit</button>
</div>
</div>
</form>
</div>
</body>
</html>
一个var finishIt bool
func RecursiveFunc(x int, depth int, quit chan bool) int {
if finishIt {
return 0
}
//other code here
}
//some code here, but than we decide to stop it
finishIt = true
类是可选的,那该怎么办?
如果它设置为Transaction
,那么这是一个正常的交易,如果它有一个值,那么它就是一个定期交易。如果您要拆分课程,frequency
可能是nil
的子类,只会添加RecurringTransaction
字段。
答案 1 :(得分:0)
Realm支持在有限程度上对对象进行子类化。如果将Object
子类化为另一个Object
子类,则子类将包含超类的所有属性以及它自己的属性。这将在数据库中创建两个单独的表,跟踪每种类型。
因此,您不需要具有冗余属性名称。这样的事情应该有效:
class Transaction: Object {
dynamic var id: String = UUID().uuidString
dynamic var title: String = ""
dynamic var amount: Double = 0
dynamic var createdAt: Date = Date()
dynamic var category: Category?
dynamic var recurringTransaction: RecurringTransaction?
dynamic var type: TransactionType = .Income
}
class RecurringTransaction: Transaction {
dynamic var frequency: TransactionFrequency = .Monthly
}
(完全披露:我为Realm工作)如果Realm是一个选项并且您没有Core Data经验,我不建议您尝试使用Core Data。学习曲线和所需的样板代码量并不是一件容易实现的事情。