在我的iOS应用程序中,我需要我的用户能够恢复/重置他们的密码.我正在使用Drupal iOS SDK来管理用户登录.一切正常,但是我想弄清楚如何将用户的电子邮件地址发布到服务端点以触发drupal密码恢复电子邮件?例如,用户将电子邮件输入到UITextField,然后点击提交按钮.但是似乎没有任何相关的文件?
代码如下 - 我只是不确定我应该在sendButton中放入什么方法?DIOSUser?DIOSSession?
DIOSUser.m
+ (void)userSendPasswordRecoveryEmailWithEmailAddress: (NSString*)email
success:(void (^)(AFHTTPRequestOperation *operation, id responseObject)) success
failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error)) failure {
NSString *path = [NSString stringWithFormat:@"user/request_new_password/%@", email];
NSLog(@"This is the input email %@", email);
[[DIOSSession sharedSession] sendRequestWithPath:path method:@"POST" params:nil success:success failure:failure];
}
Run Code Online (Sandbox Code Playgroud)
ViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
self.forgotField.returnKeyType = UIReturnKeyDone;
[self.forgotField setDelegate:self];
// Do any additional setup after loading the view from its nib.
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)];
[self.view addGestureRecognizer:tap];
}
- …Run Code Online (Sandbox Code Playgroud) 我已经在我的应用程序中的UIImageView上实现了UIPinchGestureRecognizer,但是无论我在哪里捏图像,它似乎都放大到相同的位置.有谁知道如何让它放大到用户实际"捏"的位置?见下面的代码.
ViewController.m
- (IBAction)scaleImage:(UIPinchGestureRecognizer *)recognizer {
recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale);
recognizer.scale = 1;
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;
{
BOOL shouldReceiveTouch = YES;
if (gestureRecognizer == tap) {
shouldReceiveTouch = (touch.view == featureImage);
}
return shouldReceiveTouch;
}
Run Code Online (Sandbox Code Playgroud) 我刚刚将Facebook iOS SDK与我的应用程序集成,登录效果很好.也就是说,SDK似乎没有给我自定义登录按钮的选项(它为我提供了屏幕中间那个丑陋的默认按钮).我在我的应用程序中使用Storyboard - 如何将我自己的按钮连接到他们提供的代码?我已经看到一些较旧的答案发布到Stack,但FB文档已经改变了:/
Viewcontroller.m
FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc] init];
loginButton.center = self.view.center;
[self.view addSubview:loginButton];
Run Code Online (Sandbox Code Playgroud) 对不起,这个新问题,但是我在这个问题上撕裂了我的头发.我可以通过像FireFox的POSTER这样的程序成功地将数据发布到我的端点URL.但是,我正在尝试将相同的JSON数据从我的应用程序发布到我的端点URL(Drupal services push_notifications终点),并且由于某种原因它不会成功POST.这是我正在使用的代码:
ViewController.m
NSString *urlString1 = @"http://app.com/endpoint001/push_notifications";
NSDictionary *jsonBodyDict = @{@"token":postDeviceID, @"type":@"ios"};
NSData *jsonBodyData = [NSJSONSerialization dataWithJSONObject:jsonBodyDict options:kNilOptions error:nil];
// watch out: error is nil here, but you never do that in production code. Do proper checks!
NSString *urlString2 = [NSString stringWithFormat:@"http://app.com/endpoint001/push_notifications?token=%@&type=%@",
postDeviceID,@"ios"];
NSMutableURLRequest *request = [NSMutableURLRequest new];
request.HTTPMethod = @"POST";
// for alternative 1:
[request setURL:[NSURL URLWithString:urlString1]];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setHTTPBody:jsonBodyData];
[request addValue:csrfToken forHTTPHeaderField:@"X-CSRF-Token"];
// for alternative 2:
[request setURL:[NSURL URLWithString:urlString2]];
// no body …Run Code Online (Sandbox Code Playgroud) 我最近将操作系统更新为Catalina,并将Xcode更新为11.2。由于这样做,当我尝试在设备上运行应用程序的发行版时,仅收到错误消息:
无法安装该应用程序。
当我点击“详细信息”时,它将为我提供以下内容:
应用程序安装失败域:com.apple.dtdevicekit代码:-402620395失败原因:找不到此可执行文件的有效配置文件。
用户信息:{DVTRadarComponentKey = 487927; “ com.apple.dtdevicekit.stacktrace” =(0 DTDeviceKitBase 0x000000011baff6e7 DTDKCreateNSError + 109 1 DTDeviceKitBase
0x000000011baffde9 DTDK_AMDErrorToNSError + 792 2 DTDeviceKitBase
0x000000011bb3f56a 90- [DTDKMobileDeviceTokenxBasevship 3Bassingship_Signature_Tokenship 3配上FB_Int的Shift + Signing_Signature_Message_Signal_Signal_tv_song_Signal_tv_song_Signal_tv_song_tv_song_tv_song_tv_song_tv_songs_tv
0x000000011bb3f301 - [DTDKMobileDeviceToken installApplicationBundleAtPath:withOptions:andError:withCallback:] + 1589 5 IDEiOSSupportCore 0x000000011b9c7a25 __118- [DVTiOSDevice(DVTiPhoneApplicationInstallation)processAppInstallSet:appUninstallSet:installOptions:completionBlock:] _ block_invoke.352 + 4523 6 DVTFoundation 0x00000001036a03ba __DVT_CALLING_CLIENT_BLOCK + 7 7 DVTFoundation 0x00000001036a1a92 __DVTDispatchAsync_block_invoke + 809 8
libdispatch.dylib 0x00007fff68220583 _dispatch_call_block_and_release + 12 9 libdispatch.dylib 0x00007fff6822150e _dispatch_client_callout + 8 10 libdispatch.dylib 0x00007fff68226ace _dispatch_lane_serial_drain + 597 11 libdispatch.dylib 0x00007fff68227452 _dispatch_lane_invoke + …
我一直在浏览Stack几个小时试图修复这个错误,我已经尝试了所有我能找到/想到的东西.我正在向App Store提交现有应用程序的更新,在提交构建时,我一直收到此错误:
签名无效.代码对象根本没有签名.确保您已使用分发证书(而非临时证书或开发证书)对您的应用程序进行了签名.验证Xcode中的代码签名设置在目标级别是否正确(覆盖项目级别的任何值.另外,确保您上载的包是使用Xcode中的Release目标而不是模拟器目标构建的.
毫无疑问,我的应用程序使用分发证书签名,安装并选择了正确的配置文件,配置文件包含正确的证书,我删除了配置文件并创建了一个新的配置文件以尝试修复错误,我重新安装了证书,重新启动Xcode ...多次清理项目,甚至重新启动我的系统; 我很难过.
另外:当我尝试导出构建时,即使我已选择使用我的配置文件并且它似乎使用我选择的配置文件构建,它表示它正在使用"XC [我的配置文件的名称]"配置文件.当我检查门户网站时,现在是我创建的配置文件,以及一个与XC相同标题的单独配置文件.即使我在开发人员门户网站上删除此配置文件,它也会被重新创建?这会导致提交错误吗?请帮忙.
我在我创建的tableView侧栏中有一个UISearchBar(&UISearchDisplayController)(见附图).点击我的UINavigationBar中的按钮时可见.在我的Map View Controller里面,我在导航栏中有一个UISegmentControl,它允许我的用户在视图之间来回切换(mapView和friendsMapView).
出于某种原因,UISearchBar在最初打开时在侧栏中显得很好.但是当我点击段控件切换到friendsMapView,然后返回mapView时,我的UISearchBar就消失了(见图).
知道为什么会这样吗?我在StoryBoard中实现了上述功能.请参阅下面的segmentControl代码(不确定这是否有帮助):
.M
-(IBAction)segmentControl:(id)sender {
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UITableViewController *menuController;
menuController = [storyBoard instantiateViewControllerWithIdentifier:@"neighbourMenu"];
self.title = @"Controller 1";
switch (self.segmentControl.selectedSegmentIndex)
{
case 0:
[mapView setHidden:NO];
[friendsMapView setHidden:YES];
menuController = [storyBoard instantiateViewControllerWithIdentifier:@"neighbourMenu"];
break;
case 1: //FRIENDS MAP VIEW
menuController = [storyBoard instantiateViewControllerWithIdentifier:@"FriendMenu"];
// self.title = @"Item 1";
[mapView setHidden:YES];
[friendsMapView setHidden:NO];
//FRIENDS MAPVIEW LOCATION/ZOOM
friendsMapView.delegate = self;
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
#ifdef __IPHONE_8_0
if(IS_OS_8_OR_LATER) {
[self.locationManager requestWhenInUseAuthorization];
// [self.locationManager requestAlwaysAuthorization];
} …Run Code Online (Sandbox Code Playgroud) 我最近将 XCode 更新到 V 11.1,自从更新以来,由于某种原因,当我在发布模式下运行我的应用程序时,我抛出了以下错误:
ld:无法与架构 armv7 clang 的主可执行文件“/Users/me/Library/Developer/Xcode/DerivedData/myapp-btokobigvkxtgwgcjrapocxlexno/Build/Products/Release-iphoneos/myapp.app/myapp”链接:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
我完全不知道如何解决这个问题 - 没有它我无法在发布模式下运行我的应用程序(是的,我正在使用分发配置文件)。帮助将不胜感激。我浏览了一些其他答案,但似乎没有一个能解决这个问题。
当我导航到该文件路径时,“myapp”只是一个带有圆圈和斜线的图标(这不是一个好兆头)。即使在我清理构建文件夹之后,也会发生同样的事情。当我尝试在发布模式下重建时,构建失败并再次抛出上述问题。
查看完整错误:
Ld /Users/admin/Library/Developer/Xcode/DerivedData/myapp-btokobigvkxtgwgcjrapocxlexno/Build/Intermediates.noindex/myapp.build/Release-iphoneos/myappTests.build/Objects-normal/armv7/Binary/myappTests normal armv7 (in target来自项目“myapp”的“myappTests”) cd /Users/admin/Desktop/myapp /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -target armv7-apple-ios8.4 - bundle -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.1.sdk -L/Users/admin/Library/Developer/Xcode/DerivedData/myapp-btokobigvkxtgwgcjrapocxlexno/Build/ Products/Release-iphoneos -F/Users/admin/Library/Developer/Xcode/DerivedData/myapp-btokobigvkxtgwgcjrapocxlexno/Build/Products/Release-iphoneos -F/Applications/Xcode。app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.1.sdk/Developer/Library/Frameworks -F/Users/admin/Desktop/myapp/Pods/FirebaseAnalytics/Frameworks -F/Users/admin/ Desktop/myapp/Pods/GoogleAppMeasurement/Frameworks -F/Users/admin/Desktop/myapp/Pods/GoogleMaps/Base/Frameworks -F/Users/admin/Desktop/myapp/Pods/GoogleMaps/Maps/Frameworks -F/Users/ admin/Desktop/myapp/Pods/GooglePlaces/Frameworks -L/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/lib -F/Applications/Xcode.app/Contents/Developer/Platforms/ iPhoneOS.platform/Developer/Library/Frameworks -filelist /Users/admin/Library/Developer/Xcode/DerivedData/myapp-btokobigvkxtgwgcjrapocxlexno/Build/Intermediates.noindex/myapp.build/Release-iphoneos/myappTests.build/Objects-normal/ armv7/myappTests。LinkFileList -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @loader_path/Frameworks -dead_strip -bundle_loader /Users/admin/Library/Developer/Xcode/DerivedData/myapp-btokobigvkxtgwgcjrapocxlexno/Build/iPhoneProducts myapp.app/myapp -Xlinker -object_path_lto -Xlinker /Users/admin/Library/Developer/Xcode/DerivedData/myapp-btokobigvkxtgwgcjrapocxlexno/Build/Intermediates.noindex/myapp.build/Release-iphoneos/myappTests.build/Objects-normal/ armv7/myappTests_lto。o -fobjc-arc -fobjc-link-runtime -lc++ -licucore -lsqlite3 -lz -framework Accelerate -framework CFNetwork -framework CoreData -framework CoreGraphics …
我创建了一个仅在我的应用首次启动时出现的屏幕; 它很棒.但是,我想在我的根视图控制器上以模态方式显示此屏幕(EditorsNoteViewController是我想在首次启动时以模态方式呈现的屏幕).有谁知道我会怎么做?这是我到目前为止:
Appdelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"])
{
NSLog(@"not first launch");
self.viewController = [[UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil] instantiateViewControllerWithIdentifier:@"articlesNav"];
self.window.rootViewController = self.viewController;
}
else
{
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedOnce"];
[[NSUserDefaults standardUserDefaults] synchronize];
self.viewController = [[UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil] instantiateViewControllerWithIdentifier:@"articlesNav"];
self.window.rootViewController = self.viewController;
EditorsNoteViewController *vc = [[EditorsNoteViewController alloc]init];
[self.viewController.navigationController presentViewController:vc animated:YES completion:nil];
}
[self.window makeKeyAndVisible];
return YES;
}
Run Code Online (Sandbox Code Playgroud) 我已经为我的网站创建了一个注册表单,并在我的users_controller.rb文件中包含以下参数,以便将输入到相应字段中的数据保存到我的数据库中.出于某种原因,当我尝试提交我创建的注册表单时,控制台告诉我firstname和lastname是不允许的参数.错误是:
未允许的参数:firstname,lastname
注册成功,其他参数输入数据库就好了; 但是firstname和lastname列仍为空.
users_controller.rb
class UsersController < ApplicationController
def create
@user = User.new(user_params)
if @user.save
flash[:success] = "You signed up successfully"
flash[:color] = "valid"
redirect_to @user
else
flash[:notice] = "Form is invalid"
flash[:color] = "invalid"
render "new"
end
end
private
def user_params
params.require(:user).permit(:firstname, :lastname, :email, :password, :password_confirmation)
end
def show
@user = User.find(params[:id])
end
def new
end
end
Run Code Online (Sandbox Code Playgroud)
new.html.erb
<%= form_for(:user, :url => {:controller => 'users', :action => 'create'}) do |f| %>
</br> <%= f.text_field :firstname, placeholder: 'First Name' …Run Code Online (Sandbox Code Playgroud)