Features
- Caching system to allow for local fetching of objects which have previously been fetched from the server. See SMCoreDataStore class reference for how to.
- Introduce additional methods for interacting with Core Data. See new methods in SMCoreDataStore and NSManagedObjectContext+Concurrency class references.
- Update to internal network request algorithms for improved performance of Core Data saves and fetches.
- Support to create a fetch request predicate in the form "relationship == managed_object", passing the predicate value an instance of NSManagedObject or NSManagedObjectID. This will translate to a StackMob query on schema A where the value of a one-to-one relationship to Schema B equals the ID of the passed managed object.
- All NSDate attributes are saved on StackMob as integers in ms, rather than seconds. This allows there not be a mismatch in translation when you also have attributes for createddate and lastmoddate.
- Every Datastore API method (SMDataStore class reference) now has an additional method definition which has parameter options for success and failure callback queues. This is used a lot internally so callbacks are not run on the main thread, but is exposed so you can do the same.
Fixes
- Fix in updateTwitterStatusWithMessage:onSuccess:onFailure method.
- Fix in createUserWithFacebookToken:username:onSuccess:onFailure: to properly send request as a POST operation.
- Fix in encoding query string parameters when logged in to ensure proper request signature.
Features
- Integrate Push Notifications into core SDK. Separate Push SDK still exists for those using StackMob only for push notifications.
- Expose SMNetworkReachability interface for developers to manually monitor network status changes.
- Requests will return SMError with code -105 (SMNetworkNotReachable) when device has no network connection.
- Now dependent on SystemConfiguration and MobileCoreServices frameworks, make sure to add them to the "Link Binary With Libraries" section of your target's Build Phases as well as import them somewhere in your project (such as your .pch file).
Fixes
- Support nil success and failure blocks.
- Update to Core Data fetch algorithm to populate internal storage with retrieved attribute values.
- URL encode primary key values on read/update/delete to support special characters.
- Add expand depth support for queries.
Features
- Updated SMQuery Geopoint method to take distance in kilometers instead of meters. New method is where:isWithin:kilometersOf:.
- Add optionsWithExpandDepth: and optionsWithReturnedFieldsRestrictedTo: methods to SMRequestOptions class.
- Provide error message when creating an object with null values for fields. If you receive an error which states that a field was sent with a value of null and the type cannot be inferred, simply go online to the Manage Schemas section of your StackMob Dashboard and manually add the field with correct data type. This happens occasionally when working with number types in Core Data.
Fixes
- Allow setting of Core Data relationships to nil.
- Add proper SMRequestOptions headers dictionary initialization.
- Change default merge policy of SMCoreDataStore managedObjectContext property to NSMergeByPropertyObjectTrumpMergePolicy. This translates to "client wins" when there are conflicts for particular objects. Feel free to change the merge policy at any time by calling the setMergePolicy: method on the managed object context of your SMCoreDataStore instance.
Features
- Full support for Core Data Boolean Data Types. A Core Data Boolean attribute will map to a Boolean field on StackMob.
- Removal of 'sm_' prefix for NSManagedObject category helper methods. Use [managedObject assignObjectId] and [managedObject primaryKeyField].
- Update SMClient user schema field property names. userPrimaryKeyField and userPasswordField describe the primary key and password field names for the user schema, respectively.
Fixes
- Update fetch request algorithm to support SMUserManagedObject change.
- Update Core Data object serialization algorithm. Serialized dictionary sent in request now includes only fields which have been updated since insert or the last call to save.
- Update SMRequestOptions for proper headers dictionary initialization.
Features
- Removal of SMModel Protocol.
- Addition of SMUserManagedObject. Your managed object subclass corresponding to user objects should inherit from this class. SMUserManagedObject provides methods to securely set passwords for user objects without storing them in Core Data attributes. For all the information on how to update your current code see this blogpost.
- Built for armv7 and armv7s architectures.
Features
- Can query whether fields are or are not nil. Thanks to combinatorial for the pull request.
Fixes
- Address error in serialization algorithm for one-to-one relationship camel cased attributes.
- Address error in request sent when reading from schemas with permissions set.
Features
- Support for iOS preferred camelCase Core Data property names.
- Support non case-sensitive schema names in datastore API.
- Support Core Data Date attribute type.
- API version and public key provided to SMClient during initialization must be correct format and non-nil.
- Core Data integration debug logging available by setting SM_CORE_DATA_DEBUG = YES. See the Debugging section on the main page of the iOS SDK Reference for more info.
Fixes
- Edits to dictionary serialization algorithms for improved performance.
- NewValueForRelationship incremental store method correctly returns empty array for to-many with no objects.
Fixes
- The method save: to the managed object context will return NO if StackMob calls fail.
- Fetch requests not returning errors.
Features
- Performing custom code methods is now available through the
SMCustomCodeRequest
class. - Binary Data can be converted into an NSString using the
SMBinaryDataConversion
class and persisted to a StackMob field with Binary Data type.
Features
- Initial release of new and improved iOS SDK. Core Data integration serves as the biggest change to the way developers interact with the SDK. See iOS SDK v1.0 beta for more information.