2015-04-15 2 views
-1

Привет всем, я застрял в проблеме при выборе пользовательских контактов. Я пишу код для этого и его отлично работаю в симуляторе, показывая имена пользователей и номера. Теперь, когда я тестирую на устройстве, ничего не появляется. см. мой код, что с этим не так.Контакты не показаны на устройстве

#import <AddressBookUI/AddressBookUI.h> 
#import <Contacts/Contacts.h> 

я импортировать их в моем файле .H и вот код оГО

CNContactStore *store = [[CNContactStore alloc] init]; 
[store requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError * _Nullable error) { 
    if (granted == YES) { 
     //keys with fetching properties 
     NSArray *keys = @[CNContactFamilyNameKey, CNContactGivenNameKey, CNContactPhoneNumbersKey, CNContactImageDataKey]; 
     NSString *containerId = store.defaultContainerIdentifier; 
     NSPredicate *predicate = [CNContact predicateForContactsInContainerWithIdentifier:containerId]; 
     NSError *error; 
     NSArray *cnContacts = [store unifiedContactsMatchingPredicate:predicate keysToFetch:keys error:&error]; 
     if (error) { 
      NSLog(@"error fetching contacts %@", error); 
     } else { 
      for (CNContact *contact in cnContacts) { 

       NSLog(@"print contacts %@",contact.givenName); 

       for (CNLabeledValue *label in contact.phoneNumbers) { 
        NSString *phone = [label.value stringValue]; 
        if ([phone length] > 0) { 

         NSLog(@"Print Phone no %@",phone); 

        } 
       } 
      } 
     } 
    } 
}]; 

его прекрасно работать в тренажере, но он не работает на моем устройстве, пожалуйста, помогите.

+0

Вы не можете получить доступ к файлам за пределами собственных приложений. Песочница – Paulw11

ответ

4

Короткий ответ: Нет

Длинного ответ: Нет, все приложения на прошивке работает в песочнице, это означает, что они имеют доступ только к файлам и папкам в пределах их собственного «рабочее пространства». В iOS 8 появились общие контейнеры, которые приложения могут использовать для обмена документами и файлами между собой, но это распространяется только на приложения в той же «группе приложений», как правило, на приложение и его расширение. Это означает, что вы не можете получить доступ к файлам других приложений, если они явно не предоставлены вам через расширение общего доступа. Поскольку эти расширения вызываются по запросу пользователя, приложение не может передавать эти файлы в фоновом режиме и, конечно же, не при удалении. Когда приложения удаляются, iOS автоматически запрашивает у пользователя, что документы/данные будут потеряны, однако сохраненные в сети данные/документы могут быть доступны.

Дополнительная информация о файловой системе песочнице: Apple Doc's

iOS8 Документ Provider - Accessing Files Outside Your Sandbox - Это инициированной пользователем процесс.

+0

благодарит вас за быстрый ответ. можно ли это сделать в ios 8 с быстрым внедрением расширений для очень простых целей, таких как изображения, видео или некоторые аудиофайлы. – user3694372

+0

Теоретически да. Но есть ограничения, упомянутые в ответе выше –

+0

Еще раз спасибо за простой и короткий ответ – user3694372

Смежные вопросы