我正在使用FBSDKLoginButton允许用户登录使用Facebook和使用
FBSDKLoginButton.readPermissions = @[@"public_profile",@"email",@"user_likes",@"email",@"user_birthday"];
要求权限,但我需要一个权限,这是我应该使用的publish_actions
FBSDKLoginManager
同
logInWithReadPermissions:@[@"public_profile",@"user_likes",@"user_birthday"]
logInWithPublishPermissions:@[@"publish_actions"]
Run Code Online (Sandbox Code Playgroud)
但这由于某种原因影响了我的许可"我的一些许可是缺少检查图像
码:-
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logInWithPublishPermissions:@[@"publish_actions"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error) {
// Process error
} else if (result.isCancelled) {
// Handle cancellations
} else {
// If you ask for multiple permissions at once, you
// should check if specific permissions missing
if ([result.grantedPermissions containsObject:@"publish_actions"]) {
// Do work
}
}
}];
[login logInWithReadPermissions:@[@"public_profile",@"",@"user_likes",@"user_birthday"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if …Run Code Online (Sandbox Code Playgroud) 我试图获取联系人的出生数据但是如果用户没有选择年份或者联系人来自Facebook和年份或者自己的数据是隐藏的那么它给了我年份的"1604"值你可以看到我意思是在图像中.


我正在尝试加速我的应用搜索,当有大量数据时它会滞后.
所以我试图分裂搜索谓词的UI使用dispatch_async不会dispatch_sync造成任何不同,如果我使用它.
问题是当我使用时dispatch_async,应用程序崩溃有时是因为[__NSArrayI objectAtIndex:]: index "17" beyond bounds.
我现在发生这种情况是因为我们说第一个仍然工作并重新加载tableView并继续搜索将改变数组大小取决于结果所以在这种情况下"CRASH":(
这是我的代码:
dispatch_async(myQueue, ^{
searchArray = [PublicMeathods searchInArray:searchText array:allData];
} );
if(currentViewStyle==listViewStyle){
[mytable reloadData];
}
Run Code Online (Sandbox Code Playgroud)
我试过这个:
dispatch_async(myQueue, ^{
NSArray *tmpArray = [PublicMeathods searchInArray:searchText array:allData];
dispatch_sync(dispatch_get_main_queue(), ^{
searchArray = tmpArray;
[mytable reloadData];
});
});
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,滞后仍然存在.
更新-1-:
努力工作后搜索Predicate只用了2ms :)但是当用户搜索时键盘仍然滞后,所以我得到的结果之后我唯一能做的就是重新加载表"改变用户界面"这个我认为让它滞后,
所以我搜索分裂这两个操作"在键盘上打字和刷新UI".
更新-2-:
@matehat /sf/answers/1181593031/
和
@TomSwift /sf/answers/1180623461/
答案像魅力一样工作:)
我有两个模型版本--12和13.然后我创建了一个xcmappingmodel-File,其中包含源12和目标13.
我将NSEntityMigrationPolicy子类化,并将我的类添加到mappingmodel-File到所需的实体.
@interface EndDateMigrationPolicy : NSEntityMigrationPolicy
Run Code Online (Sandbox Code Playgroud)

在我的设备上安装和旧版本(11)后,我使用模型版本13安装当前状态 - 应用程序运行,但我的迁移方法未被调用.我错过了什么吗?
编辑:使用这些选项是否正确?
NSDictionary *options = @{NSMigratePersistentStoresAutomaticallyOption: @YES,
NSInferMappingModelAutomaticallyOption: @YES};
Run Code Online (Sandbox Code Playgroud) 我正在尝试获取组名,但经过多次调用此方法"由用户重新加载联系人",它会给出nil值和以下错误.
-(void) getGroupsName
{
[groupsName removeAllObjects];
//address book object to interact with iPhone contacts.
ABAddressBookRef addressbook = ABAddressBookCreate();
//get groups count
CFIndex groupsCount = ABAddressBookGetGroupCount(addressbook);
//get all available groups as array
CFArrayRef allGroups = ABAddressBookCopyArrayOfAllGroups(addressbook);
for (int i = 0; i<groupsCount; i++) {
//get group of index=i from groups array
ABRecordRef group = CFArrayGetValueAtIndex(allGroups, i);
//get group name, I use __bridge_transfer to transfer from C to objective-c.
[groupsName addObject:(__bridge_transfer NSString*)ABRecordCopyCompositeName(group)];
}
CFRelease(allGroups);
CFRelease(addressbook);
}
//////////////////////////////////////////////////////////////
warning: Could not …Run Code Online (Sandbox Code Playgroud) 我有一个Local VPN使用“ NETunnelProvider/ NetworkExtentsion”的应用程序,在我的解决方案中,我在设备本身上创建了一个拆分隧道来跟踪 DNS 请求,使用NEKit我能够查看数据包内部并根据目标地址过滤正在进行的请求(let's call ita UDP listener for DNS requests).
这个解决方案在 iOS 13.7 及更低版本上运行良好,最近苹果发布iOS 14,我的解决方案停止工作,VPN连接仍然建立,但用户无法访问任何网站,我调试了代码并发现networkExtision没有收到任何packets来自用户活动的信息.
我正在使用CocoaAsyncSocket图书馆。
func udpSocket(_ sock: GCDAsyncUdpSocket, didReceive data: Data, fromAddress address: Data, withFilterContext filterContext: Any?) {
let host = GCDAsyncUdpSocket.host(fromAddress: address)
guard let message = DNSMessage(payload: data) else {
return
}
guard let session = pendingSession.removeValue(forKey: message.transactionID) else {
return
}
session.realResponseMessage = message
session.realIP = …Run Code Online (Sandbox Code Playgroud) 我试图从一些地方得到的数据,并将其保存在一个NSMutableArray包含数据和信息自定义对象.
每当用户打开相同的数据是从源加载,并转换为我的可爱阵列自定义对象的应用程序.这需要很长的时间(〜10-20s),使很愚蠢的应用程序.所以我试图获取数据并在此链接中显示它
我尝试了什么:
NSUserDefault.在任何人开始回答这个问题之前.看看示例代码并运行它以确保检索数据并显示它的含义.在重新启动样品后的快速时间,使我想要更清楚:)
如果有人能让我的样本更加清晰,我会感激不尽.
我有这个代码将所有联系人图像存储在字典中.但是,在某些情况下,当它被中断时,联系人的图像就会消失.
dispatch_async(dispatch_get_main_queue(), ^{
if (ABPersonHasImageData(_personObj)) {
// UIImage *image = [UIImage imageWithData:(__bridge NSData*) ABPersonCopyImageDataWithFormat(_personObj, kABPersonImageFormatThumbnail)];
NSData *data = (__bridge NSData *) ABPersonCopyImageDataWithFormat(_personObj, kABPersonImageFormatThumbnail);
UIImage *image = [UIImage imageWithData:data scale:1];
int recordId = ABRecordGetRecordID(_personObj);
[contactImagesDi setValue:image forKey:[NSNumber numberWithInt:recordId]];
}
});
Run Code Online (Sandbox Code Playgroud) ios ×7
iphone ×6
objective-c ×6
ios6 ×3
ios5 ×2
addressbook ×1
facebook ×1
ios14 ×1
networking ×1
nsdate ×1
swift ×1
udp ×1