- Notifications for a refresh being needed (when autorefresh is off) now send the notification type RLMRealmRefreshRequiredNotification rather than RLMRealmDidChangeNotification.
[RLMObject initWithObject:]
and[RLMObject createInRealmWithObject:]
now support any object type with kvc properties.- Improve performance when getting the count of items matching a query but not reading any of the objects in the results.
- Add a return value to
-[RLMRealm refresh]
that indicates whether or not there was anything to refresh. - Add the class name to the error message when an RLMObject is missing a value for a property without a default.
- Add support for opening Realms in read-only mode.
- Realm change notifications when beginning a write transaction are now sent after updating rather than before, to match refresh.
- The timer used to trigger notifications has been removed. Notifications are now only triggered by commits made in other threads, and can not currently be triggered by changes made by other processes. Interprocess notifications will be re-added in a future commit with an improved design.
- Updating to core library version 0.82.2.
- Add property
deletedFromRealm
to RLMObject to indicate objects which have been deleted. - Add support for the IN operator in predicates.
- Add support for the BETWEEN operator in link queries.
- Add support for multi-level link queries in predicates (e.g.
foo.bar.baz = 5
). - Switch to building the SDK from source when using CocoaPods and add a Realm.Headers subspec for use in targets that should not link a copy of Realm (such as test targets).
- Allow unregistering from change notifications in the change notification handler block.
- Significant performance improvements when holding onto large numbers of RLMObjects.
- Realm-Xcode6.xcodeproj now only builds using Xcode6-Beta6.
- Improved performance during RLMArray iteration, especially when mutating contained objects.
- Fix crashes and assorted bugs when sorting or querying a RLMArray returned from a query.
- Notifications are no longer sent when initializing new RLMRealm instances on background threads.
- Handle object cycles in -[RLMObject description] and -[RLMArray description].
- Lowered the deployment target for the Xcode 6 projects and Swift examples to iOS 7.0, as they didn't actually require 8.0.
- Support setting model properties starting with the letter 'z'
- Fixed crashes that could result from switching between Debug and Relase builds of Realm.
- Realm-Xcode6.xcodeproj now only builds using Xcode6-Beta5.
- Properties to be persisted in Swift classes must be explicitly declared as
dynamic
. - Subclasses of RLMObject subclasses now throw an exception on startup, rather than when added to a Realm.
- Add support for querying for nil object properties.
- Improve error message when specifying invalid literals when creating or initializing RLMObjects.
- Throw an exception when an RLMObject is used from the incorrect thread rather than crashing in confusing ways.
- Speed up RLMRealm instantiation and array property iteration.
- Allow array and objection relation properties to be missing or null when creating a RLMObject from a NSDictionary.
- Fixed a memory leak when querying for objects.
- Fixed initializing array properties on standalone Swift RLMObject subclasses.
- Fix for queries on 64bit integers.
- Realm-Xcode6.xcodeproj now only builds using Xcode6-Beta4.
- Updating to core library version 0.80.5.
- Now support disabling the
autorefresh
property on RLMRealm instances. - Building Realm-Xcode6 for iOS now builds a universal framework for Simulator & Device.
- Using NSNumber properties (unsupported) now throws a more informative exception.
- Added
[RLMRealm defaultRealmPath]
- Proper implementation for [RLMArray indexOfObjectWhere:]
- The default Realm path on OS X is now ~/Library/Application Support/[bundle identifier]/default.realm rather than ~/Documents
- We now check that the correct framework (ios or osx) is used at compile time.
- Fixed rapid growth of the realm file size.
- Fixed a bug which could cause a crash during RLMArray destruction after a query.
- Fixed bug related to querying on float properties:
floatProperty = 1.7
now works. - Fixed potential bug related to the handling of array properties (RLMArray).
- Fixed bug where array properties accessed the wrong property.
- Fixed bug that prevented objects with custom getters to be added to a Realm.
- Fixed a bug where initializing a standalone object with an array literal would trigger an exception.
- Clarified exception messages when using unsupported NSPredicate operators.
- Clarified exception messages when using unsupported property types on RLMObject subclasses.
- Fixed a memory leak when breaking out of a for-in loop on RLMArray.
- Fixed a memory leak when removing objects from a RLMArray property.
- Fixed a memory leak when querying for objects.
- None.
- Updating to core library version 0.80.3.
- Added support for basic querying of RLMObject and RLMArray properties (one-to-one and one-to-many relationships).
e.g.
[Person objectsWhere:@"dog.name == 'Alfonso'"]
or[Person objectsWhere:@"ANY dogs.name == 'Alfonso'"]
Supports all normal operators for numeric and date types. Does not support NSData properties orBEGINSWITH
,ENDSWITH
,CONTAINS
and other options for string properties. - Added support for querying for object equality in RLMObject and RLMArray properties (one-to-one and one-to-many relationships).
e.g.
[Person objectsWhere:@"dog == %@", myDog]
[Person objectsWhere:@"ANY dogs == %@", myDog]
[Person objectsWhere:@"ANY friends.dog == %@", dog]
Only supports comparing objects for equality (i.e. ==) - Added a helper method to RLMRealm to perform a block inside a transaction.
- OSX framework now supported in CocoaPods.
- Fixed Unicode support in property names and string contents (Chinese, Russian, etc.). Closing #612 and #604.
- Fixed bugs related to migration when properties are removed.
- Fixed keyed subscripting for standalone RLMObjects.
- Fixed bug related to double clicking on a .realm file to launch the Realm Browser (thanks to Dean Moore).
- Rename migration methods to -migrateDefaultRealmWithBlock: and -migrateRealmAtPath:withBlock:
- Moved Realm specific query methods from RLMRealm to class methods on RLMObject (-allObjects: to +allObjectsInRealm: ect.)
- Added +createInDefaultRealmWithObject: method to RLMObject.
- Added support for array and object literals when calling -createWithObject: and -initWithObject: variants.
- Added method -deleteObjects: to batch delete objects from a Realm
- Support for defining RLMObject models entirely in Swift (experimental, see known issues).
- RLMArrays in Swift support Sequence-style enumeration (for obj in array).
- Implemented -indexOfObject: for RLMArray
- Properties other than String, NSData and NSDate require a default value in the model. This can be an empty (but typed) array for array properties.
- The previous caveat also implies that not all models defined in Objective-C can be used for object properties. Only Objective-C models with only implicit (i.e. primitives) or explicit default values can be used. However, any Objective-C model object can be used in a Swift array property.
- Array property accessors don't work until its parent object has been added to a realm.
- Realm-Bridging-Header.h is temporarily exposed as a public header. This is temporary and will be private again once rdar://17633863 is fixed.
- Does not leverage Swift generics and still uses RLM-prefix everywhere. This is coming in #549.
- Rename schemaForObject: to schemaForClassName: on RLMSchema
- Removed -objects:where: and -objects:orderedBy:where: from RLMRealm
- Removed -indexOfObjectWhere:, -objectsWhere: and -objectsOrderedBy:where: from RLMArray
- Removed +objectsWhere: and +objectsOrderedBy:where: from RLMObject
- New Xcode 6 project for experimental swift support.
- New Realm Editor app for reading and editing Realm db files.
- Added support for migrations.
- Added support for RLMArray properties on objects.
- Added support for creating in-memory default Realm.
- Added -objectsWithClassName:predicateFormat: and -objectsWithClassName:predicate: to RLMRealm
- Added -indexOfObjectWithPredicateFormat:, -indexOfObjectWithPredicate:, -objectsWithPredicateFormat:, -objectsWithPredi
- Added +objectsWithPredicateFormat: and +objectsWithPredicate: to RLMObject
- Now allows predicates comparing two object properties of the same type.
Completely rewritten to be much more object oriented.
- Everything
- None.
- None.
The Objective-C API has been updated and your code will break!
RLMTable
objects can only be created with anRLMRealm
object.- Renamed
RLMContext
toRLMTransactionManager
- Renamed
RLMContextDidChangeNotification
toRLMRealmDidChangeNotification
- Renamed
contextWithDefaultPersistence
tomanagerForDefaultRealm
- Renamed
contextPersistedAtPath:
tomanagerForRealmWithPath:
- Renamed
realmWithDefaultPersistence
todefaultRealm
- Renamed
realmWithDefaultPersistenceAndInitBlock
todefaultRealmWithInitBlock
- Renamed
find:
tofirstWhere:
- Renamed
where:
toallWhere:
- Renamed
where:orderBy:
toallWhere:orderBy:
- Added
countWhere:
onRLMTable
- Added
sumOfColumn:where:
onRLMTable
- Added
averageOfColumn:where:
onRLMTable
- Added
minOfProperty:where:
onRLMTable
- Added
maxOfProperty:where:
onRLMTable
- Added
toJSONString
onRLMRealm
,RLMTable
andRLMView
- Added support for
NOT
operator in predicates - Added support for default values
- Added validation support in
createInRealm:withObject:
- None.
TightDB is now Realm! The Objective-C API has been updated and your code will break!
- All references to TightDB have been changed to Realm.
- All prefixes changed from
TDB
toRLM
. TDBTransaction
andTDBSmartContext
have merged intoRLMRealm
.- Write transactions now take an optional rollback parameter (rather than needing to return a boolean).
addColumnWithName:
and variant methods now return the index of the newly created column if successful,NSNotFound
otherwise.
createTableWithName:columns:
has been added toRLMRealm
.- Added keyed subscripting for RLMTable's first column if column is of type RLMPropertyTypeString.
setRow:atIndex:
has been added toRLMTable
.RLMRealm
constructors now have variants that take an writable initialization block- New object interface - tables created/retrieved using
tableWithName:objectClass:
return custom objects
- None.
contextWithPersistenceToFile:error:
renamed tocontextPersistedAtPath:error:
inTDBContext
readWithBlock:
renamed toreadUsingBlock:
inTDBContext
writeWithBlock:error:
renamed towriteUsingBlock:error:
inTDBContext
readTable:withBlock:
renamed toreadTable:usingBlock:
inTDBContext
writeTable:withBlock:error:
renamed towriteTable:usingBlock:error:
inTDBContext
findFirstRow
renamed toindexOfFirstMatchingRow
onTDBQuery
.findFirstRowFromIndex:
renamed toindexOfFirstMatchingRowFromIndex:
onTDBQuery
.- Return
NSNotFound
instead of -1 when appropriate. - Renamed
castClass
tocastToTytpedTableClass
onTDBTable
. removeAllRows
,removeRowAtIndex
,removeLastRow
,addRow
andinsertRow
methods on table now return void instead of BOOL.
- A
TDBTable
can now be queried usingwhere:
andwhere:orderBy:
takingNSPredicate
andNSSortDescriptor
as arguments. - Added
find:
method onTDBTable
to find first row matching predicate. contextWithDefaultPersistence
class method added toTDBContext
. Will create a context persisted to a file in app/documents folder.renameColumnWithIndex:to:
has been added toTDBTable
.distinctValuesInColumnWithIndex
has been added toTDBTable
.dateIsBetween::
,doubleIsBetween::
,floatIsBetween::
andintIsBetween::
have been added toTDBQuery
.- Column names in Typed Tables can begin with non-capital letters too. The generated
addX
selector can look odd. For example, a table with one column with nameage
, appending a new row will look like[table addage:7]
. - Mixed typed values are better validated when rows are added, inserted, or modified as object literals.
addRow
,insertRow
, and row updates can be done using objects derived fromNSObject
.where
has been added toTDBView
andTDBViewProtocol
.- Adding support for "smart" contexts (
TDBSmartContext
).
- Modifications of a
TDBView
andTDBQuery
now throw an exception in a readtransaction.
The Objective-C API has been updated and your code will break!
Of notable changes a fast interface has been added.
This interface includes specific methods to get and set values into Tightdb.
To use these methods import <Tightdb/TightdbFast.h>
.
getTableWithName:
renamed totableWithName:
inTDBTransaction
.addColumnWithName:andType:
renamed toaddColumnWithName:type:
inTDBTable
.columnTypeOfColumn:
renamed tocolumnTypeOfColumnWithIndex
inTDBTable
.columnNameOfColumn:
renamed tonameOfColumnWithIndex:
inTDBTable
.addColumnWithName:andType:
renamed toaddColumnWithName:type:
inTDBDescriptor
.- Fast getters and setters moved from
TDBRow.h
toTDBRowFast.h
.
- Added
minDateInColumnWithIndex
andmaxDateInColumnWithIndex
toTDBQuery
. - Transactions can now be started directly on named tables.
- You can create dynamic tables with initial schema.
TDBTable
andTDBView
now have a shared protocol so they can easier be used interchangeably.
- Fixed bug in 64 bit iOS when inserting BOOL as NSNumber.
- Typed interface Cursor has now been renamed to Row.
- TDBGroup has been renamed to TDBTransaction.
- Header files are renamed so names match class names.
- Underscore (_) removed from generated typed table classes.
- TDBBinary has been removed; use NSData instead.
- Underscope (_) removed from generated typed table classes.
- Constructor for TDBContext has been renamed to contextWithPersistenceToFile:
- Table findFirstRow and min/max/sum/avg operations has been hidden.
- Table.appendRow has been renamed to addRow.
- getOrCreateTable on Transaction has been removed.
- set*:inColumnWithIndex:atRowIndex: methods have been prefixed with TDB
- *:inColumnWithIndex:atRowIndex: methods have been prefixed with TDB
- addEmptyRow on table has been removed. Use [table addRow:nil] instead.
- TDBMixed removed. Use id and NSObject instead.
- insertEmptyRow has been removed from table. Use insertRow:nil atIndex:index instead.
- Added firstRow, lastRow selectors on view.
- firstRow and lastRow on table now return nil if table is empty.
- getTableWithName selector added on group.
- getting and creating table methods on group no longer take error argument.
- [TDBQuery parent] and [TDBQuery subtable:] selectors now return self.
- createTable method added on Transaction. Throws exception if table with same name already exists.
- Experimental support for pinning transactions on Context.
- TDBView now has support for object subscripting.
- None.
The Objective-C API has been updated and your code will break!
- Most selectors have been renamed in the binding!
- Prepend TDB-prefix on all classes and types.
- Return types and parameters changed from size_t to NSUInteger.
- Adding setObject to TightdbTable (t[2] = @[@1, @"Hello"] is possible).
- Adding insertRow to TightdbTable.
- Extending appendRow to accept NSDictionary.
- None.
The Objective-C API has been updated and your code will break!
- addRow renamed to addEmptyRow
- Adding a simple class for version numbering.
- Adding get-version and set-version targets to build.sh.
- tableview now supports sort on column with column type bool, date and int
- tableview has method for checking the column type of a specified column
- tableview has method for getting the number of columns
- Adding methods getVersion, getCoreVersion and isAtLeast.
- Adding appendRow to TightdbTable.
- Adding object subscripting.
- Adding method removeColumn on table.
- None.
Template follows:
?? summary
- None.
- None.
- None.