私は、ユーザが画像を添付した画像をアップロードできるようにするためにアプリを作った。両方がスクロールビューに表示されます。私はまた、アップロードしたユーザーの詳細とアップロードされた日付を表示する画像の下にUILabelを持っています。代わりに、私は、次を得る:(「ユーザ名、日付によってアップロード」など)..UILabelにPFObjectを割り当てる - PFUserをNSString値にする?
ユーザー情報や日付を表示する必要がありUILabelは私が望むだろう形式でそれをしないん現時点ではしかし、
以下は、ユーザーが画像をアップロードするときに使用されるPFObjectのコードです。
PFObject *imageObject = [PFObject objectWithClassName:@"ReportImageObject"];
[imageObject setObject:file forKey:@"image"];
[imageObject setObject:[PFUser currentUser] forKey:@"user"];
[imageObject setObject:self.descriptionTextField.text forKey:@"comment"];
ここで、私はUILabelにPFObjectの値を割り当てています。 ( - 漠然と左上の「テスト3」にアップロードされた画像で見ることができる画像の説明)
NSDate *creationDate = reportObject.createdAt;
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"HH:mm dd/MM yyyy"];
UILabel *infoLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 210, reportImageView.frame.size.width, 15)];
infoLabel.text = [NSString stringWithFormat:@"Uploaded by: %@, %@", [reportObject objectForKey:KEY_USER], [df stringFromDate:creationDate]];
infoLabel.font = [UIFont fontWithName:@"Arial-ItalicMT" size:9];
infoLabel.textColor = [UIColor blueColor];
infoLabel.backgroundColor = [UIColor clearColor];
[reportImageView addSubview:infoLabel];
用語KEY_USER
が@"user"
として定義されている私を混乱させる事は私の他のラベルがあることですユーザーが入力した内容を正確に表示したdescriptionFieldText.textにアクセスしますか? NSLog
をPFObject objectForKey
に関連付けてチェックしても、望ましくないUILabel
と同様のフォーマットが表示されますが、実際のラベルは希望する値にアクセスしますか? UILabelは
-(void)getReportImages{
//Fetch images
PFQuery *query = [PFQuery queryWithClassName:@"ReportImageObject"];
[query orderByDescending:KEY_CREATION_DATE];
[query findObjectsInBackgroundWithBlock:^(NSArray * _Nullable objects, NSError * _Nullable error) {
if (!error) {
self.reportsObjectArray = nil;
self.reportsObjectArray = [[NSArray alloc] initWithArray:objects];
[self loadReportViews];
} else {
[self showErrorView:error];
}
}];
}
-(void)loadReportViews{
for (id viewToRemove in [self.reportsScroll subviews]) {
if ([viewToRemove isMemberOfClass:[UIView class]])
[viewToRemove removeFromSuperview];
}
int originY = 10;
for (PFObject *reportObject in self.reportsObjectArray){
UIView *reportImageView = [[UIView alloc] initWithFrame:CGRectMake(10, originY, self.view.frame.size.width -20, 300)];
//Adds image
PFFile *image = (PFFile*)[reportObject objectForKey:KEY_IMAGE];
UIImageView *userImage = [[UIImageView alloc] initWithImage:[UIImage imageWithData:image.getData]];
userImage.frame = CGRectMake(0, 0, reportImageView.frame.size.width, 200);
[reportImageView addSubview:userImage];
//Adds image info
NSDate *creationDate = reportObject.createdAt;
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"HH:mm dd/MM yyyy"];
UILabel *infoLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 210, reportImageView.frame.size.width, 15)];
infoLabel.text = [NSString stringWithFormat:@"Uploaded by: %@, %@", [reportObject objectForKey:KEY_USER], [df stringFromDate:creationDate]];
infoLabel.font = [UIFont fontWithName:@"Arial-ItalicMT" size:9];
infoLabel.textColor = [UIColor blueColor];
infoLabel.backgroundColor = [UIColor clearColor];
[reportImageView addSubview:infoLabel];
//Adds image description
UILabel *descriptionLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 24, reportImageView.frame.size.width, 15)];
descriptionLabel.text = [reportObject objectForKey:KEY_COMMENT];
descriptionLabel.font = [UIFont fontWithName:@"ArialMT" size:13];
descriptionLabel.textColor = [UIColor whiteColor];
descriptionLabel.backgroundColor = [UIColor clearColor];
[reportImageView addSubview:descriptionLabel];
[self.reportsScroll addSubview:reportImageView];
originY = originY + reportImageView.frame.size.width + 20;
NSLog(@"Test of description%@",descriptionLabel);
NSLog(@"The content of infolabel %@", infoLabel);
}
self.reportsScroll.contentSize = CGSizeMake(self.reportsScroll.frame.size.width, originY);
}
のUIViewController場所をユーザ割り当て表示されている -
UPDATED 主な方法は
アップロードされた画像が表示されているビュー・コントローラを使用しています画像と画像の説明 またimageObjectは
- (void)sendPressed:(id)sender{
[self.descriptionTextField resignFirstResponder];
self.navigationItem.rightBarButtonItem.enabled = NO;
UIActivityIndicatorView *loadingSpinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
[loadingSpinner setCenter:CGPointMake(self.view.frame.size.width/2.0, self.view.frame.size.height/2.0)];
[loadingSpinner startAnimating];
[self.view addSubview:loadingSpinner];
//Upload a new picture if not currently uploaded.
NSData *pictureData = UIImagePNGRepresentation(self.imageToUpload.image);
PFFile *file = [PFFile fileWithName:@"image" data:pictureData];
[file saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (succeeded) {
PFObject *imageObject = [PFObject objectWithClassName:@"ReportImageObject"];
[imageObject setObject:file forKey:@"image"];
[imageObject setObject:[PFUser currentUser] forKey:@"user"];
[imageObject setObject:self.descriptionTextField.text forKey:@"comment"];
[imageObject saveInBackgroundWithBlock:^(BOOL succeeded, NSError * _Nullable error) {
if (succeeded) {
[self.navigationController popViewControllerAnimated:YES];
}
else {
NSString *errorString = [[error userInfo] objectForKey:@"error"];
UIAlertController *errorAlertView = [UIAlertController alertControllerWithTitle:@"Error" message:errorString preferredStyle:UIAlertControllerStyleAlert];
[errorAlertView addAction:[UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault handler:nil]];
[self presentViewController:errorAlertView animated:YES completion:nil];
}
}];
}
else{
NSString *errorString = [[error userInfo] objectForKey:@"error"];
UIAlertController *errorAlertView = [UIAlertController alertControllerWithTitle:@"Error" message:errorString preferredStyle:UIAlertControllerStyleAlert];
[errorAlertView addAction:[UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault handler:nil]];
[self presentViewController:errorAlertView animated:YES completion:nil];
}
}progressBlock:^(int percentDone) {
NSLog(@"Uploaded: %d %%", percentDone);
}];
}
'[imageObject setObjectメソッドを使用しない理由:[PFUserあるCurrentUser ] .username forKey:@ "user"]; 'または' [imageObject setObject:[PFUser currentUser] .username forKey:@ "username"]; '代わりに? – nathan
「NSString * _strong」の初期化中に、互換性のない型 'NSString * _strong'の初期化エラーが発生しました。 void'' PFObjectが - (void)アクション内の別の.mファイルから来ている可能性があります。 メインの質問を、使用されている2つの主要なメソッドで更新しました – FarisZ