我一直在寻找一些关于如何NSArray在Core Data中存储一段时间的示例代码,但是没有任何运气.有人会介意给我一些教程或例子,或者更好的是写一个简单的样本作为这个问题的答案吗?我已经阅读了这个,但它没有显示如何实现一个可转换属性的示例NSArray.提前致谢!
JSON_CATEGORY_DATA_URL_STRING我的Feed网址在哪里,返回正常:
[
{
"group":"For Sale",
"code":"SSSS"
},
{
"group":"For Sale",
"category":"Wanted",
"code":"SWNT"
}
]
Run Code Online (Sandbox Code Playgroud)
我似乎无法从以下代码中获得一个好的NSDictionary(或NSArray):
+ (NSDictionary *)downloadJSON
{
NSDictionary *json_string;
NSString *dataURL = [NSString stringWithFormat:@"%@", JSON_CATEGORY_DATA_URL_STRING];
NSLog(@"%@",dataURL);
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:dataURL]];
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
json_string = [[[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]autorelease];
NSDictionary *json_dict = (NSDictionary *)json_string;
NSLog(@"json_dict\n%@",json_dict);
NSLog(@"json_string\n%@",json_string);
return json_string;
}
Run Code Online (Sandbox Code Playgroud)
我已经阅读了很多这方面的帖子,但我没有得到它.
我有一个数据库模型类NSObject.我有一组这些对象NSMutableArray.我用indexOfObject:来找比赛.问题是模型对象的内存地址更改.所以我重写了hash返回模型行ID的方法.然而,这并没有解决它.我还必须覆盖isEqual:方法来比较方法的值hash.
isEqual:默认情况下,该方法用于确定相等性的是什么?
我假设它使用内存地址.阅读isEqual:文档后,我认为它使用了hash方法中的值.显然,事实并非如此,因为我试图覆盖这个价值并没有解决我最初的问题.
解决方案: 我已将@ BlackRider的答案标记为正确,因为它是最通用的,特别是对于复杂的比较,但还有其他非常好的答案和评论.我会鼓励任何有相同或类似问题的人对其进行审核,并针对您的具体情况评估最佳行动方案.
在我的情况下,我实际上并没有在我的实现中使用BlackRider的解决方案.在@ JoshCaswell的评论以及@ voromax的建议下indexesOfObjectsWithOptions:passingTest:,我选择使用我自己的解决方案(参见下面的编辑#2),因为在这种情况下我的比较非常简单.
感谢所有回答并提供见解的人.
我正在寻找一种有效的方法来从NSArray基于该对象的属性(在这种情况下是唯一标识符)中检索对象.在使用Linq的C#.NET中,我会做类似的事情
MyObject obj = myList.Single(o => o.uuid == myUUID);
Run Code Online (Sandbox Code Playgroud)
我也想知道是否有一种有效的方法来获得匹配非唯一属性的对象数组.再次,与Linq一样,它看起来像
List<MyObject> objs = myList.Where(o => o.flag == true).ToList();
Run Code Online (Sandbox Code Playgroud)
当然,我可以编写循环来执行此操作,但它们不可重用,我对它们的性能持怀疑态度.
查找具有唯一ID的对象:
-(MyObject*)findObjectWithUUID:(NSString*)searchUUID{
for (MyObject* obj in _myArray){
if([obj.uuid isEqualToString: searchUUID])
return obj;
}
}
Run Code Online (Sandbox Code Playgroud)
查找对象数组:
-(NSArray*)findObjectsWithFlag:(BOOL)f{
NSMutableArray* arr = [NSMutableArray array];
for (MyObject* obj in _myArray){
if(obj.flag == f)
[arr addObject:obj];
}
return arr;
}
Run Code Online (Sandbox Code Playgroud)
- 编辑 -
幸运的是,在第一种情况下,我正在寻找的对象有一个唯一的标识符,我知道只有一个.我想出了一个解决方案,在我的对象上实现isEqual,它将被调用indexOfObject:
- (BOOL)isEqual:(id)object{
return [self.uuid isEqualToString: ((MyObject*)object).uuid];
}
Run Code Online (Sandbox Code Playgroud)
然后创建一个"假的"查找对象,并使用它来查找真实的查找对象
MyObject *lookupObject …Run Code Online (Sandbox Code Playgroud) 如何停止块枚举?
myArray.enumerateObjectsUsingBlock( { object, index, stop in
//how do I stop the enumeration in here??
})
Run Code Online (Sandbox Code Playgroud)
我知道你在obj-c中这样做:
[myArray enumerateObjectsUsingBlock:^(id *myObject, NSUInteger idx, BOOL *stop) {
*stop = YES;
}];
Run Code Online (Sandbox Code Playgroud) 在Objective-C中提取NSArray切片的最简单方法是什么?
(很像PHP中的array_slice函数)
如果您有一个NSArray字符串
{ @"ONE", @"ONE", @"ONE", "TWO", @"THREE", @"THREE" }
Run Code Online (Sandbox Code Playgroud)
我怎么会把它变成
{ @"ONE", @"TWO", @"THREE" }
Run Code Online (Sandbox Code Playgroud)
..数组遵循与原始数据相同的顺序.我认为您可以将数组转换为NSSet以获取唯一的项目,但如果您将其转换回数组,则无法保证获得相同的顺序.
我有一些NSDictionary对象存储在一个NSArray被调用的telephoneArray.我获取键的值number,然后用NSDictionary数组中相同索引处的新对象替换我刚刚读取的内容.然后我想将这些新对象放入NSSet.怎么能实现这一目标?看下面我的失败尝试.
// Add all telephones to this branch
for (int i=0; i<[telephoneArray count]; i++) {
[newTelephone setBranch:newBranch];
[newTelephone setNumber:[[telephoneArray objectAtIndex:i] valueForKey:@"number"]];
NSLog(@"%@",[[telephoneArray objectAtIndex:i] valueForKey:@"number"]);
[telephoneArray replaceObjectAtIndex:i withObject:newTelephone];
NSLog(@"phone number %i = %@",i,[[telephoneArray objectAtIndex:i] valueForKey:@"number"]);
}
NSSet *telephoneSet = [NSSet setWithArray:telephoneArray];
NSLog(@"telephoneArray=%i",[telephoneArray count]);
NSLog(@"telephoneSet=%i",[[telephoneSet allObjects] count]);
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
2010-03-06 03:06:02.824 AIB[5160:6507] 063 81207
2010-03-06 03:06:02.824 AIB[5160:6507] phone number 0 = 063 81207
2010-03-06 03:06:02.825 AIB[5160:6507] 063 81624
2010-03-06 03:06:02.825 AIB[5160:6507] …Run Code Online (Sandbox Code Playgroud) 我有一个客观的C类,
@interface message : NSObject {
NSString *from;
NSString *date;
NSString *msg;
}
Run Code Online (Sandbox Code Playgroud)
我有一个NSMutableArray这个消息类的实例.我想使用iOS 5 SDK中的新JSONSerialization API将NSMutableArray中的所有实例序列化为JSON文件.我怎样才能做到这一点 ?
是通过迭代NSArray中每个元素的实例来创建每个键的NSDictionary吗?有人可以帮助解决这个问题的代码吗?我无法在Google中取得好成绩,因为"JSON"会将结果偏向服务器端调用和数据传输而不是序列化.非常感谢.
编辑:
NSError *writeError = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:notifications options:NSJSONWritingPrettyPrinted error:&writeError];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSLog(@"JSON Output: %@", jsonString);
Run Code Online (Sandbox Code Playgroud) 在iOS 7中,在SKPaymentTransaction类上,属性transactionReceipt:
// Only valid if state is SKPaymentTransactionStatePurchased.
@property(nonatomic, readonly) NSData *transactionReceipt
Run Code Online (Sandbox Code Playgroud)
...已被弃用.但是,在我的代码中,我创建了一个InAppPurchase类,并且在我控制方法购买的方法中,我在代码中使用了委托方法,它就像:
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
for (SKPaymentTransaction *transaction in transactions) {
switch (transaction.transactionState) {
case SKPaymentTransactionStatePurchasing:
// code and bla bla bla
[self initPurchase];
NSLog(@"PASO 1");
break;
case SKPaymentTransactionStatePurchased:
// this is successfully purchased!
purchased = TRUE;
NSLog(@"PASO 2");
[self isPurchased];
NSLog(@"purchased %s", purchased? "true" : "false");
// and return the transaction data
if ([delegate respondsToSelector:@selector(successfulPurchase:restored:identifier:receipt:)])
[delegate successfulPurchase:self restored:NO …Run Code Online (Sandbox Code Playgroud) nsarray ×10
objective-c ×8
ios ×5
iphone ×2
nsset ×2
arrays ×1
block ×1
cocoa-touch ×1
core-data ×1
enumeration ×1
ios7 ×1
json ×1
nsdictionary ×1
nsobject ×1
sbjson ×1
swift ×1
xcode5 ×1