Intereting Posts
Mock UserDefaults Объект в модульном тестировании Возврат _ArrayBuffer Время отклика очень мало в устройстве iPhone при сохранении или загрузке изображений Могу ли я перечислить приложения iPhone в своем приложении? Facebook iOS SDK и проблема аутентификации на основе Safari Swift – интерактивный бортовой компьютер при использовании приложения Телефонный зазор – работа на симуляторе не на реальном устройстве textFieldDidEndEditing «слишком поздно» Создание массива для cellForRowAtIndexPath с другими методами iPhone: переместите UIButton без анимации iOS Как загрузить файл сертификата (crt) в приложении для подключения https-сервера Добавление границы к краям непрозрачной области UIImage с фильтром Использование клавиатуры iOS с телефоном без поля формы / ввода? Кнопка «Назад» не появляется после выполнения push segue UIWebView переходит на видео Youtube, не оставаясь в альбомной ориентации Обнаружение внезапной остановки прокрутки в UIScrollView

Поля, отсутствующие при сохранении объекта Parse PFInstallation

Я сохраняю объект PFInstallation в приложении: didFinishLaunchingWithOptions – я не прошу пользователя разрешать push или что-то делать с deviceToken – и я нахожу, что многие стандартные поля остаются незаселенными, в том числе:

  • appIdentifier
  • AppVersion
  • Имя приложения
  • значок
  • parseVersion
  • часовой пояс

(Эти столбцы не определены в браузере данных и не отображаются в NSLog объекта PFInstallation.)

  • deviceType действительно заполняется

Я хватаю и успешно сохраняю deviceModel и deviceOS в двух настраиваемых столбцах. Но я немного озадачен тем, почему вышеупомянутые столбцы остаются неопределенными.

Вот код:

[Parse setApplicationId:PARSE_APPID_DEV clientKey:PARSE_CLIENTKEY_DEV]; // record device model and OS NSString *model = [self getDeviceModelAndNumber]; // via sys/utsname.h NSString *sysVersion = [[UIDevice currentDevice] systemVersion]; PFInstallation *currentInstallation = [PFInstallation currentInstallation]; PFUser *loggedUser = [PFUser currentUser]; if (loggedUser) [currentInstallation setObject:loggedUser forKey:@"user"]; [currentInstallation setObject:model forKey:@"deviceModel"]; [currentInstallation setObject:sysVersion forKey:@"deviceOS"]; NSLog(@"installation: %@", currentInstallation); [currentInstallation saveInBackground]; 

Этот проект был создан в Xcode 6. В другом проекте, созданном в Xcode 5, я делаю практически то же самое, и столбцы заполняются и сохраняются правильно.

Кто-нибудь еще сталкивается с этим? У меня Googled для этого совсем немного, но не нашел решения. Любая помощь очень ценится.

После многих экспериментов кажется, что (замечательно) меняется последняя строка на

 [currentInstallation saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { // some logging code here }]; 

решает проблему. Поэтому, я полагаю, я должен написать ошибку с Parse. (Фактически, есть уже один открытый: https://developers.facebook.com/bugs/712949858787516/ )

Это идеально подходит для меня:

 (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { // Store the deviceToken in the current installation and save it to Parse. PFInstallation *currentInstallation = [PFInstallation currentInstallation]; [currentInstallation setDeviceTokenFromData:deviceToken]; currentInstallation.channels = @[ @"YOU_CHANNEL_PREFERENCE" ]; NSLog(@"currentInstallation %@", currentInstallation); // record device model and OS NSString *model = [[UIDevice currentDevice] model]; // deviceModel NSString *osVersion = [[UIDevice currentDevice] systemVersion]; // osVersion NSString *pushType = @"APN"; // pushType NSString *deviceName = [[UIDevice currentDevice] name]; // deviceName [currentInstallation setObject:model forKey:@"deviceModel"]; [currentInstallation setObject:osVersion forKey:@"osVersion"]; [currentInstallation setObject:pushType forKey:@"pushType"]; [currentInstallation setObject:deviceName forKey:@"deviceName"]; NSLog(@"installation: %@", currentInstallation); [currentInstallation saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { // some logging code here NSLog(@"works"); }]; }