Intereting Posts
Сина Вейбо не появляется в настройках iOS Включить / отключить push-уведомление после завершения запуска или внутри нашего приложения Проблема с заголовком uitableview заголовка Округлые углы внизу CoreGraphics iOS Можно ли воспроизвести AVQueuePlayer в обратном порядке? Вывод Underscan с адаптером iPhone 5 Lightning HDMI Переход на родительский контроллер просмотра с контроллера детского представления – iOS Как отклонить modal uitabbarcontroller от своего собственного контроллера детского представления Как конвертировать дату типа \ / Date (1440156888750-0700) \ / в то, что может обрабатывать Swift? RestKit 0.20 NSCFConstantString valueForUndefinedKey ошибка при сопоставлении отношения Воспроизведение защищенного паролем .m3u аудиопотока с помощью AVPlayer или аналогичного Обнаружение Apple Watch с использованием CoreBluetooth Обнаружение движения головы – iOS Откройте диалоговое окно facebook для аутентификации вместо установленного приложения facebook в iphone? Ошибка возникает только в загруженном хранилище приложений iOS.

Поля, отсутствующие при сохранении объекта 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"); }]; }