Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 使用不同名称的NSMutableArray和SetImage的相同算法的工作方式不同_Objective C_Arrays_Nsmutablearray_Mutable - Fatal编程技术网

Objective c 使用不同名称的NSMutableArray和SetImage的相同算法的工作方式不同

Objective c 使用不同名称的NSMutableArray和SetImage的相同算法的工作方式不同,objective-c,arrays,nsmutablearray,mutable,Objective C,Arrays,Nsmutablearray,Mutable,所以我有个问题 我有: NSMutableArray *photos_imagesArray; NSMutableArray *myPhotos_imagesArray; 在@接口EXViewController内的.h文件中声明 我所做的是: 对于一个视图-photos\u viewController,我从photos\u imagesArray获取图像数据,并在此视图上使用UIImageView上的setImage。一切正常 现在,当我使用myPhotos\u viewControlle

所以我有个问题

我有:

NSMutableArray *photos_imagesArray;
NSMutableArray *myPhotos_imagesArray;
@接口EXViewController
内的.h文件中声明

我所做的是:

对于一个视图-
photos\u viewController
,我从
photos\u imagesArray
获取图像数据,并在此视图上使用
UIImageView
上的setImage。一切正常

现在,当我使用
myPhotos\u viewController
myPhotos\u imagesArray
执行完全相同的操作时,setImage不会启动并且
myPhotos\u imagesArray
会清空

这到底是怎么回事?我有两个非常相同的算法在两个同样相同的视图中工作,但是我得到了不同的结果。唯一不同的是几个名字。XCode甚至没有显示任何错误

更新1(共享代码):

在EXViewController.h中声明可变数组的位置

@interface EXViewController : UIViewController <UITextFieldDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate> {
    UIImagePickerController *upload_imagePickerCamera;
    UIImagePickerController *upload_imagePickerLibrary;
    UIImage *upload_imageUploaded;
    IBOutlet UIImageView *upload_imageViewUploadedImage;

    // Photos Currently viewed
    NSInteger _photoIndex;
    NSMutableArray *photos_imagesArray;
    NSMutableArray *myPhotos_imagesArray;
}
至于那部分没有-

// MY PHOTOS

-(void)myPhotos_goToMyPhotos{

    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UIViewController *viewControllerPhotos = [mainStoryboard instantiateViewControllerWithIdentifier:@"viewControllerMyPhotos"];
    [self  presentViewController:viewControllerPhotos animated:true completion:^{

        PFQuery *query_photos = [PFQuery queryWithClassName:@"Photo"];

        [query_photos whereKey:@"userId" equalTo:[PFUser currentUser].objectId];
        [query_photos orderByDescending:@"createdAt"];

        [query_photos findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
            if (!error) {
                _photoIndex = 0;

                // Copy objects array to photos array
                myPhotos_imagesArray = [objects mutableCopy];

                NSLog(@"%i",[myPhotos_imagesArray count]);

                // Set Current photo
                [self myPhotos_setCurrentPhoto];


            } else {

                NSString *errorString = [error userInfo][@"error"];
                UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Error" message:errorString delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];
                [alert show];

            }
        }];

    }];

}

-(void)myPhotos_setCurrentPhoto{

    if ([myPhotos_imagesArray count] != 0) {

        // Set photo in image view
        PFFile *userImageFile = myPhotos_imagesArray[_photoIndex][@"imageFile"];
        [userImageFile getDataInBackgroundWithBlock:^(NSData *imageData, NSError *error) {
            if (!error) {
                UIImage *image = [UIImage imageWithData:imageData];
                self.myPhotos_imageViewCurrentPhoto.image = image;
            }
        }];

    }
}
另外,我在完成回调的内部和外部尝试了该算法-结果相同

更新2(添加了整个EXViewController.h文件):

#导入
#进口
@接口EXViewController:UIViewController{
UIImagePickerController*上传\U imagePickerCamera;
UIImagePickerController*上传\U imagePickerLibrary;
UIImage*上传图片上传;
IBOUTLE UIImageView*upload_imageViewUploadedImage;
//当前查看的照片
NSInteger_光指数;
NSMutableArray*照片\图像阵列;
NSMutableArray*myPhotos\u imagesArray;
}
//登录表单
@属性(强,非原子)IBOutlet UITextField*login\u fieldEmail;
@属性(强,非原子)IBOutlet UITextField*login\u fieldPassword;
-(iAction)登录按钮识别:(id)发件人;
-(iAction)登录按钮协商:(id)发件人;
//报名表
@属性(强,非原子)IBOUTLE UITextField*signup\U fieldEmail;
@属性(强,非原子)IBOutlet UITextField*注册\字段密码;
@属性(强,非原子)IBOUTLE UITextField*signup\U FIELDCONTRY;
@属性(强,非原子)IBUISegmentedControl*signup_fieldSex;
@属性(强、非原子)IBOUTLE UITextField*signup\U fieldYear;
-(iAction)按钮启动操作:(id)发送方;
//照片
@属性(弱、非原子)IBUIImageView*photos\U imageViewCurrent;
-(iAction)照片按钮更新加:(id)发件人;
-(iAction)照片按钮日期减:(id)发件人;
//菜单
-(iAction)菜单按钮识别:(id)发送方;
-(iAction)菜单按钮照片:(id)发送者;
//上传照片
-(iAction)上传按钮照片:(id)发件人;
-(iAction)上传按钮照片库:(id)发件人;
-(iAction)上传按钮上传:(id)发件人;
@属性(强,非原子)IBUIProgressView*upload\u progressViewUpload;
@属性(强,非原子)IBOUTLE UILabel*upload_labelImageUploaded;
@属性(强,非原子)IBUIActivityIndicatorView*上传重力;
//我的照片
@属性(弱、非原子)IBUIImageView*myPhotos\U imageViewCurrentPhoto;
@属性(弱,非原子)IBUILabel*myPhotos\U labelRating;
@属性(弱,非原子)IBUILabel*myPhotos_labelVotes;
-(iAction)myPhotos_按钮下一步:(id)发件人;
-(iAction)myPhotos_buttonPrevious:(id)发件人;
@结束

显然,这与名字无关。将它们设置为属性并在其上设置断点,这将允许您查看发生了什么或没有发生什么。或者只是在所有对其进行更改的行上放置断点,然后访问无法正常工作的行。没有更多信息,很难说。您应该添加一些断点并登录代码以检查您的假设。请共享一些代码。您在EXViewController中发布的所有代码都是吗?FWIW,您的setImage语法在两者之间是不同的。我看不出这有什么关系,除非块因为语法不同而保留了不同的指针。
// MY PHOTOS

-(void)myPhotos_goToMyPhotos{

    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UIViewController *viewControllerPhotos = [mainStoryboard instantiateViewControllerWithIdentifier:@"viewControllerMyPhotos"];
    [self  presentViewController:viewControllerPhotos animated:true completion:^{

        PFQuery *query_photos = [PFQuery queryWithClassName:@"Photo"];

        [query_photos whereKey:@"userId" equalTo:[PFUser currentUser].objectId];
        [query_photos orderByDescending:@"createdAt"];

        [query_photos findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
            if (!error) {
                _photoIndex = 0;

                // Copy objects array to photos array
                myPhotos_imagesArray = [objects mutableCopy];

                NSLog(@"%i",[myPhotos_imagesArray count]);

                // Set Current photo
                [self myPhotos_setCurrentPhoto];


            } else {

                NSString *errorString = [error userInfo][@"error"];
                UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Error" message:errorString delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];
                [alert show];

            }
        }];

    }];

}

-(void)myPhotos_setCurrentPhoto{

    if ([myPhotos_imagesArray count] != 0) {

        // Set photo in image view
        PFFile *userImageFile = myPhotos_imagesArray[_photoIndex][@"imageFile"];
        [userImageFile getDataInBackgroundWithBlock:^(NSData *imageData, NSError *error) {
            if (!error) {
                UIImage *image = [UIImage imageWithData:imageData];
                self.myPhotos_imageViewCurrentPhoto.image = image;
            }
        }];

    }
}
#import <UIKit/UIKit.h>
#import <Parse/Parse.h>

@interface EXViewController : UIViewController <UITextFieldDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate> {
    UIImagePickerController *upload_imagePickerCamera;
    UIImagePickerController *upload_imagePickerLibrary;
    UIImage *upload_imageUploaded;
    IBOutlet UIImageView *upload_imageViewUploadedImage;

    // Photo Currently viewed
    NSInteger _photoIndex;
    NSMutableArray *photos_imagesArray;
    NSMutableArray *myPhotos_imagesArray;
}

// Login Form
@property (strong, nonatomic) IBOutlet UITextField *login_fieldEmail;
@property (strong, nonatomic) IBOutlet UITextField *login_fieldPassword;
- (IBAction)login_buttonSignInAction:(id)sender;
- (IBAction)login_buttonForgotAction:(id)sender;


// Sign Up Form
@property (strong, nonatomic) IBOutlet UITextField *signup_fieldEmail;
@property (strong, nonatomic) IBOutlet UITextField *signup_fieldPassword;
@property (strong, nonatomic) IBOutlet UITextField *signup_fieldCountry;
@property (strong, nonatomic) IBOutlet UISegmentedControl *signup_fieldSex;
@property (strong, nonatomic) IBOutlet UITextField *signup_fieldYear;
- (IBAction)buttonSignupAction:(id)sender;

// Photos
@property (weak, nonatomic) IBOutlet UIImageView *photos_imageViewCurrent;
- (IBAction)photos_buttonRatePlus:(id)sender;
- (IBAction)photos_buttonRateMinus:(id)sender;


// Menu
- (IBAction)menu_buttonSignOutAction:(id)sender;
- (IBAction)menu_buttonMyPhotos:(id)sender;


// Upload Photo
- (IBAction)upload_buttonTakePhoto:(id)sender;
- (IBAction)upload_buttonPhotoAlbum:(id)sender;
- (IBAction)upload_buttonUpload:(id)sender;
@property (strong, nonatomic) IBOutlet UIProgressView *upload_progressViewUpload;
@property (strong, nonatomic) IBOutlet UILabel *upload_labelImageUploaded;
@property (strong, nonatomic) IBOutlet UIActivityIndicatorView *upload_gravity;

// My Photos
@property (weak, nonatomic) IBOutlet UIImageView *myPhotos_imageViewCurrentPhoto;
@property (weak, nonatomic) IBOutlet UILabel *myPhotos_labelRating;
@property (weak, nonatomic) IBOutlet UILabel *myPhotos_labelVotes;
- (IBAction)myPhotos_buttonNext:(id)sender;
- (IBAction)myPhotos_buttonPrevious:(id)sender;



@end