我的相册里有一张gif图片.当我使用它UIImagePickerController来选择该图像时,我需要将图像转换NSData为存储.
早些时候,我用过
NSData *thumbData = UIImageJPEGRepresentation(thumbnail, 0.5);
Run Code Online (Sandbox Code Playgroud)
但它不适用于gif图像.thumbData将是零.
我如何NSData从gif图像中获取?
我怎么知道它是一个需要特殊处理的gif图像?
我从XML文件中获取数据,并将其存储在NSData对象中.我想将NSData转换为NSDictionary并将该数据存储在plist中.
我的代码如下:
NSURL *url = [NSURL URLWithString:@"http://www.fubar.com/sample.xml"];
NSData *data = [NSData dataWithContentsOfURL:url];
NSLog(@"%@", data);
Run Code Online (Sandbox Code Playgroud)
要转换数据,我使用:
- (NSDictionary *)downloadPlist:(NSString *)url {
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10];
NSURLResponse *resp = nil;
NSError *err = nil;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&resp error:&err];
if (!err) {
NSString *errorDescription = nil;
NSPropertyListFormat format;
NSDictionary *samplePlist = [NSPropertyListSerialization propertyListFromData:responseData mutabilityOption:NSPropertyListImmutable format:&format errorDescription:&errorDescription];
if (!errorDescription)
return samplePlist;
[errorDescription release];
}
return nil;
}
Run Code Online (Sandbox Code Playgroud)
谁能告诉我怎么做?
我使用我在GitHub上找到的精彩"build_curl"脚本构建了许多版本的curl.我还使用其他技术重建卷曲.
但我总是遇到同样的问题.
我有一个与curl链接的iOS项目.我可以在模拟器上构建和调试(显然使用i386).只要我选择构建当前架构并且在构建时插入设备,我就可以使用设备进行构建和调试.
但是,如果我选择尝试构建Release OR,如果我选择为没有插入设备的'iOS Device'构建Debug.我总是会遇到以下错误:
curlrules.h:143:6: '__curl_rule_01__' declared as an array with a negative size
Run Code Online (Sandbox Code Playgroud)
这是由于:
#define CurlchkszEQ(t, s) sizeof(t) == s ? 1 : -1
typedef char
__curl_rule_01__
[CurlchkszEQ(long, CURL_SIZEOF_LONG)];
Run Code Online (Sandbox Code Playgroud)
这个#define存在于curlbuild.h中
#define CURL_SIZEOF_LONG 4
Run Code Online (Sandbox Code Playgroud)
哪个应该是正确的,因为我正在为32位架构构建,但是,Xcode决定了这一点sizeof(long) != 4,因此宏会产生错误.
我选择只为armv7和armv7s构建,但我仍然遇到此错误.
我不明白为什么这不会建立.
我用F6in 调试了下面的代码Xcode 6,执行的顺序非常有趣.
这是代码--7行,在第1行设置断点:
let request = AWSDynamoDBPutItemInput()
request.tableName = "blah"
let card = AWSDynamoDBAttributeValue()
card.S = "1234"
let email = AWSDynamoDBAttributeValue()
email.S = "notset"
request.item = ["card_number" : card, "email" : email]
Run Code Online (Sandbox Code Playgroud)
当我通过代码F6时,它显示以下序列(数字是行号):
1,2,4,2,3,4,6,4,5,6,7,6,7
Run Code Online (Sandbox Code Playgroud)
为什么是这样?这是Xcode还是语言?这些类是在亚马逊的AWS SDK中定义的,不确定是否重要,它们是通过swift-objective-c桥接访问的,这可能与桥接有关.
顺便说一下,执行的最终结果是正确的.
如何将Xcode从7.0版降级到6.4版?
我最近将Xcode的版本升级到最新的版本(7.0),我开始有相应的编译错误.我想回到6.4.
这似乎不可能,但也许其他人也有同样的问题.
我是否可以通过编程方式接受自动填充,或以某种方式获取弹出的建议单词?我的问题是我正在捕获返回/退格键击,然后将焦点移动到另一个textview.当输入/退格时,textview将忽略自动建议的单词.似乎只能通过命中空格/点(并返回新行)来接受自动完成.使用此代码:
- (BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range
replacementText:(NSString *)text {
NSRange textViewRange = [textView selectedRange];
// Handle newrow and backspace.
if(([text length] == 0) && (textViewRange.location== 0) && textViewRange.length==0){
// BACKSPACE KEYSTROKE
[delegate doSomethingWhenBackspace];
return NO;
}else if ([text isEqualToString:@"\n"]){
// RETURN KEYSTROKE
[delegate doSomethingWhenReturn];
return NO;
}
return YES;
}
Run Code Online (Sandbox Code Playgroud)
我尝试以编程方式在返回键时添加"space",但也忽略了自动完成的单词.
else if ([text isEqualToString:@"\n"]){
// Tryin to accept autocomplete with no result.
textview.text = [textview.text stringByAppendingString:@" "];
// RETURN KEYSTROKE
[delegate doSomethingWhenReturn];
return NO;
}
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我试图在Objective-C中操纵这个curl请求:
curl -u username:password "http://www.example.com/myapi/getdata"
Run Code Online (Sandbox Code Playgroud)
我已经实现了以下内容,我得到一个数据出现错误Domain=kCFErrorDomainCFNetwork Code=303有NSErrorFailingURLKey=http://www.example.com/myapi/getdata:
// Make a call to the API to pull out the categories
NSURL *url = [NSURL URLWithString:@"http://www.example.com/myapi/getdata"];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
// Create the username:password string for the request
NSString *loginString = [NSString stringWithFormat:@"%@:%@", API_USERNAME, API_PASSWORD];
// Create the authorisation string from the username password string
NSData *postData = [loginString dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
[request setURL:url];
[request setHTTPMethod:@"GET"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request …Run Code Online (Sandbox Code Playgroud) 我正在尝试在后台线程上进行一些"屏幕外渲染",以更新我正在创建的类似设计器的应用程序的预览.
我已经使用renderInContextNSOperationQueue派生的队列来实现这一点,但请注意它很慢.
所以,我已经开始使用drawViewHierarchyInRect哪个效果很好而且速度更快.但是,我注意到当这个方法以b/g运行时,我的UI完全阻塞.
如果我在主线程上这样做...
UIView *preview = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
preview.backgroundColor = [UIColor redColor];
UIGraphicsBeginImageContextWithOptions(preview.bounds.size, NO, 0.0);
BOOL ok = [preview drawViewHierarchyInRect:preview.bounds afterScreenUpdates:YES];
UIImage *img = nil;
if( ok )
{
img = UIGraphicsGetImageFromCurrentImageContext();
}
UIGraphicsEndImageContext();
Run Code Online (Sandbox Code Playgroud)
......一切正常.
但是,如果我(比如说)派遣这个......
if (dispatch_semaphore_wait(semaphore, DISPATCH_TIME_NOW) == 0)
{
dispatch_async(renderQueue, ^{
// capture
UIView *preview = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
preview.backgroundColor = [UIColor redColor];
UIGraphicsBeginImageContextWithOptions(preview.bounds.size, NO, 0.0);
BOOL ok = [preview drawViewHierarchyInRect:preview.bounds afterScreenUpdates:YES];
UIImage *img = nil;
if( …Run Code Online (Sandbox Code Playgroud) 我想更改跟踪文件以进行开发,但保持跟踪版本不变.
对此的大多数"解决方案"表明
git update-index --assume-unchanged
Run Code Online (Sandbox Code Playgroud)
但它完全没用,因为文件仍然会被结帐或重置更改.是否有更好的解决方案可以在结账和重置命令后继续存在?
ios ×6
xcode ×4
curl ×2
git ×2
iphone ×2
nsdata ×2
objective-c ×2
debugging ×1
downgrade ×1
file ×1
gif ×1
ignore ×1
nsdictionary ×1
screenshot ×1
swift ×1
uitextview ×1
uiview ×1
xml ×1