小编Sha*_*rry的帖子

从UIImagePickerControllerReferenceURL加载UIImage

我正在使用UIImagePickerController来允许用户从图像库中选择一个图像.然后我想在sqlite数据库中启动该文件的位置,以便稍后可以参考.

我一直在做一些谷歌搜索如何做到这一点,我很快就会出现.我知道我可以通过调用delegate方法来获取项目的ReferenceURL:

    NSURL *picURL = [info objectForKey:@"UIImagePickerControllerReferenceURL"]
Run Code Online (Sandbox Code Playgroud)

这确实给了我一个有效的NSURL对象,如果我输出picURL.absoluteString,我可以看到这个文件的assets-library位置的有效URL.但是,如果我尝试使用此url创建NSData对象,以便我可以依次创建UIImage,则代码将失败,因为NSData返回nil.例如:

    NSURL *picURL = [info objectForKey:@"UIImagePickerControllerReferenceURL"]
    NSString *stringUrl = picURL.absoluteString;
    NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:stringUrl]];
    imgMain.image = [UIImage imageWithData:data]
Run Code Online (Sandbox Code Playgroud)

我意识到我在这里有点重复,但重点是获取我可以存储在sqlite中的URL的字符串表示,然后使用所述字符串创建一个图像(所以上面的代码代表了那个思路).

我发现了一些关于使用ALAssetsLibrary的信息,但这给了我各种适合,因为它似乎不适合iOS 5和ARC.我一直收到错误消息'Receiver type ALAsset for instance message是一个前向声明.我可以在引用ALAsset/ALAssetsLibrary的文件上设置属性,以忽略停止构建错误的ARC,但是一旦我离开代码块,数据就会消失.见下文:

    NSURL *referenceURL = [info objectForKey:UIImagePickerControllerReferenceURL];
    ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
    __block UIImage *returnValue = nil;
    [library assetForURL:referenceURL resultBlock:^(ALAsset *asset) {
        returnValue = [UIImage imageWithCGImage:[[asset defaultRepresentation] fullResolutionImage]];
    } failureBlock:^(NSError *error) {
       // error handling
    }];
    [library release];
Run Code Online (Sandbox Code Playgroud)

returnValue确实返回一个有效的图像,但是一旦代码退出resultBlock,数据的内容就会消失(即returnValue再次变为null).

所以我的问题是:如何使用UIImagePickerControllerReferenceURL并将其转换为我可以存储在sqlite中的字符串,然后使用所述字符串在以后创建有效的UIImage对象?

objective-c uiimagepickercontroller uiimage ios

6
推荐指数
1
解决办法
5872
查看次数

Razor中的MVC数据注释

我正在尝试在我的MVC项目中使用Data Annotations(Mono/.NET 4.5).我创建了我的模型并添加了所有适当的注释.我的视图和控制器都有适当的连线.但是,验证似乎并没有发生.我已经尝试了一切我无法找到的东西.由于这是我第一次使用Razor和Data Annotations,我想有一些我不知道的设置部分,但我找不到它的生命.这是我的代码:

模型

using System;
using System.Collections.Generic;
using System.Linq;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;

namespace MyWebsite
{
  public class RegisterViewModel : BaseViewModel
  {
    #region properties
    [Required(ErrorMessage = "Required")]
    [StringLength(50)]
    [DisplayName("First Name")]
    public string FirstName { get; set; }
    [Required(ErrorMessage = "Required")]
    [StringLength(100)]
    [DisplayName("Last Name")]
    public string LastName { get; set; }
    [StringLength(50)]
    [DisplayName("Display Name")]
    public string DisplayName { get; set; }
    [Required(ErrorMessage = "Required")]
    [StringLength(255)]
    [DisplayName("Email Address")]
    public string EmailAddress { get; set; }
    #endregion

    #region ctor …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc mono razor asp.net-mvc-4

2
推荐指数
1
解决办法
1万
查看次数