內(nèi)容很簡單,只是本人不會寫后臺,只能用到野狗API,嘗試著寫一個后臺接口,這里只做上傳頭像和下載效果,其中用到UIImage和NSData的互轉(zhuǎn),所以寫日記記錄下,和大家分享下.
//NSData轉(zhuǎn)換為UIImage
NSData *imageData = [NSData dataWithContentsOfFile: imagePath];
UIImage *image = [UIImage imageWithData: imageData];
//UIImage轉(zhuǎn)換為NSData
NSData *imageData = UIImagePNGRepresentation(aimae);
//下面是實例代碼
#pragma mark 選擇圖片
//選中圖片進入的代理方法
/**
* 選好圖片調(diào)用的代理方法
*
* @param picker 顯示選擇圖片的界面
* @param image 選中的圖片
* @param editingInfo 編輯消息描述
*/
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[picker dismissViewControllerAnimated:YES completion:nil];//推回彈出的相冊或照相機
//獲取圖片
UIImage *imgh=info[UIImagePickerControllerOriginalImage];
userHeadImageView.image=imgh;//設(shè)置頭像
// 在網(wǎng)絡(luò)開發(fā)中,上傳文件時,是文件不允許被覆蓋,文件重名
// 要解決此問題,
// 可以在上傳時使用當(dāng)前的系統(tǒng)時間作為文件名
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
// 設(shè)置時間格式
formatter.dateFormat = @"yyyy-MM-dd-HH-mm-ss";
NSString *str = [formatter stringFromDate:[NSDate date]];
//將圖片轉(zhuǎn)為data數(shù)據(jù)
NSData *imageData = UIImageJPEGRepresentation(imgh, 0.5);
//將數(shù)據(jù)轉(zhuǎn)為base64字符串
NSString *datastr = [imageData base64EncodedString];
//向網(wǎng)絡(luò)上傳頭像
[self GetDataStr:str DataStr:datastr];
}
//上傳頭像到服務(wù)器
-(void)GetDataStr:(NSString *)str DataStr:(NSString *)datastr
{
//獲取用戶信息字典
userData = [UserData GetUserData];
NSString *userName =userData.mDic[@"UserName"];
//創(chuàng)建引用
Wilddog *myRootRef = [[Wilddog alloc]initWithUrl:@"https://--此處為自己申請的野狗API用戶名--.wilddogio.com/User"];
#pragma mark 向服務(wù)器添加一個字典(注冊)
//向服務(wù)器創(chuàng)建一個名為User的字典
Wilddog *usersRef = [myRootRef childByAppendingPath: userName];
//設(shè)置需要更新的數(shù)組名
Wilddog *hopperRef = [usersRef childByAppendingPath: @"UserHeadImage"];
//設(shè)置要更新的內(nèi)容
NSDictionary *nickname = @{
@"ImageName": str,
@"ImageData":datastr,
};
//將內(nèi)容上傳服務(wù)器
[hopperRef updateChildValues: nickname];
}
//最后是加載用戶頭像 ,以上我沒做過多的操作,數(shù)據(jù)是用戶登錄的時候存儲的,上傳圖片到服務(wù)器,如果用戶沒有頭像字典則自動添加一個字典,我這里只是展示數(shù)據(jù),此方法在viewDidLoad中調(diào)用,
-(void)LoadData
{
userData = [UserData GetUserData];
NSDictionary *dic = [[NSDictionary alloc]init];
dic = userData.mDic[@"UserHeadImage"];
//獲取NSData數(shù)據(jù)
NSData *dataStr = [NSData dataFromBase64String:dic[@"ImageData"]];
UIImage *image = [UIImage imageWithData:dataStr];
userHeadImageView.image = image;
}
//剛用簡書,還沒細細研究,字體顏色不好看勿怪